Oracle与Java日期格式的区别
一、HH和HH24
众所周知,在java中 hh 和 HH 是区分 12 小时制和 24 小时制的。例1:
public static void main(String[] args) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse("2022-01-05 15:52:41");
System.out.println("当前时间为: " + date);
System.out.println("当前时间为: " + simpleDateFormat.format(date));
System.out.println("当前时间为: " + simpleDateFormat1.format(date));
}
结果:
当前时间为: Wed Jan 05 15:52:41 CST 2022
当前时间为: 2022-01-05 03:52:41
当前时间为: 2022-01-05 15:52:41
但是在Oracle中并不适用(因为Oracle不区分大小写),所以Oracle中转换时间应该是:
to_char(sysdate,'yyyy-mm-dd hh:mm:ss')
to_char(sysdate,'yyyy-mm-dd hh24:mm:ss')
其中,hh(或HH)代表12小时制,hh24(或HH24)代表24小时制。
例子用了to_char,实际使用时,自己选择to_char or to_date。
二、mm和mi
上面例1中我们可以看见,Java的 MM 和 mm 是不一样的,一个代表月份,一个代表分钟:
yyyy-MM-dd hh:mm:ss
但还是那个原因,Oracle不区分大小写,mm能识别为月份,所以Oracle的分钟应该使用mi,写法应该是:
yyyy-mm-dd hh24:mi:ss
Oracle举个例子区分:
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
to_char(sysdate,'yyyy-mm-dd hh24:mm:ss')
结果:
2022-01-05 15:52:41
2022-01-05 15:01:41