我有一个下表tbldates。我想返回当前日期在开始日期和结束日期列之间的所有行。
startdate enddate
9/13/2013 11/13/2014
9/14/2013 11/12/2014
9/15/2013 12/12/2014
6/12/2012 8/12/2013
6/12/2012 8/12/2012
SELECT * FROM tbldates d WHERE to_date(SYSDATE) BETWEEN d.startdate AND d.enddate
以上查询无效。
答案 0 :(得分:3)
您必须先使用VARCHAR
格式将DATE
列转换为TO_DATE()
。然后TRUNC(SYSDATE)
实际上删除了当前日期的时间元素。
SELECT *
FROM tbldates d
WHERE
TRUNC(SYSDATE) BETWEEN TO_DATE(d.startdate,'MM/DD/YYYY') AND TO_DATE(d.enddate,'MM/DD/YYYY')
如果startdate
和enddate
已经确定日期,那么这可以直接使用!
SELECT *
FROM tbldates d
WHERE
TRUNC(SYSDATE) BETWEEN d.startdate AND d.enddate
答案 1 :(得分:0)
试试这个:
SELECT * FROM table
WHERE TRUNC(SYSDATE) BETWEEN d.startdate AND d.enddate