--要先这样给你变量赋值 前一天开始结束的时间 SELECT to_char(Trunc(SYSDATE-1,'dd'),'yyyymmdd hh24:mi:ss') into start_time, to_char(Trunc(SYSDATE,'dd')-1/24/60/60,'yyyymmdd hh24:mi:ss') into end_time FROM dual;--然后再作查询: SELECT * FROM table_name WHERE dt BETWEEN start_time AND end_time;
to_char(Trunc(SYSDATE+1,'dd')-1/24/60/60,'yyyymmdd hh24:mi:ss') end_time FROM dual; START_TIME END_TIME
--------------------------------------------
20101104 00:00:00 20101105 23:59:59
1.between '20101105000000'and '20101105235959'这里就有问题,他会使用
这两个字符代表的数字去进行比较,而不是时间,必须加上to_date才行。
比如20100931,20101001你这样数字本应该是2天,但是用你的方法比较应该是70天,所以不对
2.直接使用to_timestamp转化成你规定的时间格式(yyyymmdd)就行了
谢谢
不过为什么变量赋值后再执行下边的SQL语句,会显示缺失关键字呢?
SELECT to_char(Trunc(SYSDATE-1,'dd'),'yyyymmdd hh24:mi:ss') into start_time,
to_char(Trunc(SYSDATE,'dd')-1/24/60/60,'yyyymmdd hh24:mi:ss') into end_time FROM dual;--然后再作查询:
SELECT * FROM table_name WHERE dt BETWEEN start_time AND end_time;
1.between '20101105000000'and '20101105235959'这里就有问题,他会使用
这两个字符代表的数字去进行比较,而不是时间,必须加上to_date才行。
比如20100931,20101001你这样数字本应该是2天,但是用你的方法比较应该是70天,所以不对
2.直接使用to_timestamp转化成你规定的时间格式(yyyymmdd)就行了