sta*_*man 0 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';
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢
更新:
我可以使用NOW()而不是'2015-02-21T00:00:00'吗?
几乎...
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';
Run Code Online (Sandbox Code Playgroud)
这使用了SQL标准TIMESTAMP文字语法,该语法由关键字TIMESTAMP和ISO 8601日期时间表示(没有T!)组成.然后,您可以轻松使用<和>比较时间戳.
根据您的评论,如果您想使用当前时间,请写下:
SELECT * FROM table_foo
WHERE start_date < SYSTIMESTAMP AND
end_date > SYSTIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
甚至:
SELECT * FROM table_foo
WHERE SYSTIMESTAMP BETWEEN start_date AND end_date;
Run Code Online (Sandbox Code Playgroud)