SQL 检查值是否在句点之间

SQL checking if value is between period

我正在尝试检查日期是否在 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”吗?

几乎...

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;