场景:在数据库中要删除一条记录,但是该记录的唯一性只能通过插入数据库的系统时间来确定,字段为date类型,格式是:2016/10/19 17:17:29。
1 解决
在百度上找到的方法是使用to_char()函数,将date字段转换为字符进行查询。
delete from trndetail where transno=10010617 and to_char(sysdtime,\'yyyy/mm/dd hh24:mi:ss\')=\'2016/10/19 17:17:29\';
2 补充
2.1 转换函数
与date操作关系最大的就是两个转换函数:to_date(),to_char()
to_date() 作用将字符类型按一定格式转化为日期类型:
具体用法:
to_date(\'2004-11-27\',\'yyyy-mm-dd\')
前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。
如;to_date(\'2004-11-27 13:34:43\', \'yyyy-mm-dd hh24:mi:ss\') 将得到具体的时间
多种日期格式:
YYYY:四位表示的年份 YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪 MM:01~12的月份编号 MONTH:九个字符表示的月份,右边用空格填补 MON:三位字符的月份缩写 WW:一年中的星期 D:星期中的第几天 DD:月份中的第几天 DDD:年所中的第几天 DAY:九个字符表示的天的全称,右边用空格补齐 HH,HH12:一天中的第几个小时,12进制表示法 HH24:一天中的第几个小时,取值为00~23 MI:一小时中的分钟 SS:一分钟中的秒 SSSS:从午夜开始过去的秒数
to_char():将日期转按一定格式换成字符类型 ——(这里在进行条件查询时候使用到了)
SQL> select to_char(sysdate,\'yyyy-mm-dd hh24:mi:ss\') time from dual;
TIME
-------------------
2004-10-08 15:22:58
即把当前时间按yyyy-mm-dd hh24:mi:ss格式转换成字符类型
在oracle中处理日期大全
TO_DATE格式
Day:
dd number 12
dy abbreviated fri
day spelled out friday
ddspth spelled out, ordinal twelfth
Month:
mm number 03
mon abbreviated mar
month spelled out march
Year:
yy two digits 98
yyyy four digits 1998
24小时格式下时间范围为: 0:00:00 - 23:59:59....
12小时格式下时间范围为: 1:00:00 - 12:59:59 ....