oracle date mysql datetime_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的函数参数不一致……

真难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值