问题描述: 在开发过程中遇到日期转换的时候 发现的关于日期转换中较为纳闷的事情…
发现 Oracle 中 时间转换 跟平时用的 不是很一样 …举个栗子:
MySQL中日期转换 [ %Y表示年 %m表示月份 %d表示天 %h表示小时 %i表示分钟 %s表示秒 ]执行select date_format(sysdate(),’%Y-%m-%d %h:%i:%s’) from table ; 结果 为2022-08-05 10:11:23;
SqlServer数据库中通过CONVERT()函数进行 日期格式化; CONVERT(varchar(45), GETDATE(), A) 其中A是由一些代码决定,(为了不占用过多的字数 这个大家可以自行查询),
Oracle数据库中格式化日期也存在自己的定义,由于 oracle数据库中的SQL语句是不区分你大小写的,就来了 [ yyyy代表年份 mm表示月份 dd表示天 hh24表示24小时制的时(非24小时制去掉24即可) mi代表分钟 ss表示秒 ],打个比方:to_char(‘sysdate’,‘yyyy-mm-dd hh24:mi:ss’),这里很多人由于在编码中经常使用 yyyy-MM-dd HH:mm:ss 来作为日期格式化的一个格式,很容易搞混肴 ,日期要求不是很严格的时候 就不会发现自己把oracle里边的函数用错了,导致日期对不上。
Java编码中使用的DateFormat(),这个里边你的pattern定义则是 [ yyyy代表年份 MM表示月份 dd表示天 HH表示24时制 hh标识12小时制 mm代表分钟 ss表示秒 ],跟以上的用法还是有一定的差别。
总结:在三款我们常用的关系型数据库(MySQL、SQL server、Oracle) 中存在着作用相同却有着不同的使用方式的函数,以至于我们在日常使用中很容易混肴,这里是要注意的。
愿琴瑟在御,岁月静好。几分厚重,些许惆怅。 我们下次再会!