ORACAL和mysql对于datetime处理的差异

今天执行了一个函数,逻辑是这样的:

create table t1(a datetime);
insert  into t9 values ('2019-03-05 01:53:55.63');

然后,在mysql中执行

select * from t9 where a='2019-03-05 01:53:55.63';

通过,正常查询到数据。

但是在ORACAL中查询相同命令,报错,报错内容:格式不匹配。

然后写了一个函数:

select * from t1 where a= TO_DATE('2021-01-06 22:51:03','yyyy-mm-dd hh-mi-ss')

报错,显示时间超限。

select * from t1 where a= TO_DATE('2021-01-06 22:51:03','yyyy-mm-dd hh24-mi-ss')

通过。

原因:mysql和oracal在处理datetime时的处理方式不同。
mysql可以以文本的方式处理datetime。

进行了一些测试:

a是datetime,默认是YYYY-MM-DD HH-MM-SS
在mysql数据库

update t9 set a='1995-9-10';

通过。显示时间为 1995-09-10 00:00:00.0

update t9 set a='1995-9-10  01';

通过。显示时间为 1995-09-10 01:00:00.0

update t9 set a='1995-9-12  01';

正常报错。

update t9 set a=0

通过,值为NULL。

update t9 set a=1

报错。

update t9 set a='1995/12/10  23';

报错。

总的来说,mysql支持文本转datetime参数而且功能很强大。但是相对oracal就不支持,需要使用to_datetime进行转化。
tip:是不是mysql自动调用了字符串转datetime的参数?这个我不清楚。

上网查了查参数,oracal是以int值的方式储存datetime数据,要使用TO_DATE进行字符串转datetime。
mysql和oracle的函数参数不一致……

真难。

你可能感兴趣的:(mysql,sql)