date——sql查询

时间:2024-03-10 12:32:38

场景:在数据库中要删除一条记录,但是该记录的唯一性只能通过插入数据库的系统时间来确定,字段为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 ....