SQL检查值是否在句点之间

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'吗?

Luk*_*der 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'; 
Run Code Online (Sandbox Code Playgroud)

这使用了SQL标准TIMESTAMP文字语法,该语法由关键字TIMESTAMPISO 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)

  • 它在Oracle中称为`SYSTIMESTAMP` (2认同)