本文中日期使用的是java.util.Date。
碰到这个问题时,我先查看了Oracle函数,是否有转换日期的函数,当我看到to_date时我就乐了。可以问题又来了,它 是把字符串转换为Oracle中的日期类型。也就是说我要提供字符串格式的日期,但是让用户提供日期字符串,格式就没法保证了。所以,应该让用户提供Date,我来将Date转换成指定格式的字符串,再使用to_date函数转换成Oracle可识别的日期即可。于是,我又找到了SimpleDateFormat(String pattern)。目前这个思路有点繁琐,日后找到简洁的方式再更新。
Java格式化Date代码如下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = sdf.format(date).toString();
Java中将字符串格式化为时间时可用:yyyy-MM-dd hh:mm:ss,但是Oracle中to_date却会报“format code appers twice”,因为Oracle不区分字符串的大小写,“mm”出现了两次,所以正确写法是”yyyy-MM-dd hh:mi:ss”。
update TABLE_NAME set DATE = to_date('" + dateString
+ "','yyyy-MM-dd hh:mi:ss') where ID =?
另外:java中的小时是24小时制,而”yyyy-MM-dd hh:mi:ss”中的小时是12小时制,解决办法很简单,只需要在hh后加上“24”即可:yyyy-MM-dd hh24:mi:ss
update TABLE_NAME set DATE = to_date('" + dateString
+ "','yyyy-MM-dd hh24:mi:ss') where ID =?