2012-03-26 89 views
0

我得到它显示在我的脚本的最近7天的数据Oracle数据库语句甲骨文的声明无法完成

的说法是:

代码:

select * from TABLE_NAME 
WHERE DATETIME BETWEEN to_char((sysdate-7,MM), 'DDMMYYYY%') AND 
     to_char((sysdate,MM), 'DDMMYYYY%') 
ORDER BY DATETIME ASC; 

但是,这个产出给我的前几个月的数据在该特定周的结果

Quote: DATETIME格式是DDMMYYYY HH:MI 如何获得只有这几个月的数据,而不是前几个月的数据

+0

一)为什么不是'型的DATETIME' DTAE? b)为什么这种格式?它的意思是什么?如果你使用字符串作为日期(不要,但如果你这样做),最好使用'yyyymmddhh24mi' – 2012-03-26 11:13:42

回答

0

化妆DATETIME一个日期,而不是:

select * from TABLE_NAME 
WHERE to_date(DATETIME, 'DDMMYYYY HH24:MI') BETWEEN case when to_char(sysdate, 'dd') > 7 then sysdate-7 else trunc(sysdate,'mm') end AND 
     sysdate 
ORDER BY DATETIME ASC; 
+0

上述语句执行时给我以下错误 “ORA-01849:小时必须介于1和12之间” – user1292831 2012-03-26 11:17:38

+0

@ user1292831-我修复了我的答案 – 2012-03-26 11:29:25

+0

这给了我整个月的数据从第一天开始,而不是前一周的数据 sysdate格式是mm/dd/yyyy HH:MI:SS – user1292831 2012-03-26 11:33:42