当前日期介于两列之间

时间:2014-09-10 09:52:34

标签: sql database oracle

我有一个下表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

以上查询无效。

2 个答案:

答案 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')

如果startdateenddate已经确定日期,那么这可以直接使用!

SELECT * 
    FROM tbldates d 
    WHERE    
    TRUNC(SYSDATE) BETWEEN d.startdate AND d.enddate

SQL Fiddle Demo

答案 1 :(得分:0)

试试这个:

 SELECT *  FROM table 
 WHERE TRUNC(SYSDATE) BETWEEN d.startdate AND d.enddate