我正在尝试检查日期是否在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'?
答案 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
文字语法,该语法由关键字TIMESTAMP
和ISO 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;