SQL检查值是否在句点之间

时间:2015-02-25 16:36:13

标签: sql oracle mybatis

我正在尝试检查日期是否在start_date和end_date之间,但这不会起作用:

SELECT * FROM table_foo
WHERE start_date BEFORE '2015-02-21T00:00:00' AND 
      end_date AFTER '2015-02-21T00:00:00'; 

我错过了什么?

由于

更新:

我可以使用NOW()代替' 2015-02-21T00:00:00'?

1 个答案:

答案 0 :(得分:9)

...几乎

SELECT * FROM table_foo
WHERE start_date < TIMESTAMP '2015-02-21 00:00:00.0' AND 
      end_date > TIMESTAMP '2015-02-21 00:00:00.0'; 

这使用了SQL标准TIMESTAMP文字语法,该语法由关键字TIMESTAMPISO 8601日期时间表示(不包含T!)组成。然后,您可以轻松使用<>来比较时间戳。

根据您的评论,如果您想使用当前时间,请写下:

SELECT * FROM table_foo
WHERE start_date < SYSTIMESTAMP AND 
      end_date > SYSTIMESTAMP; 

甚至:

SELECT * FROM table_foo
WHERE SYSTIMESTAMP BETWEEN start_date AND end_date;