Oracle与Java日期格式的区别

456 阅读1分钟

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