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
文字语法,它由关键字 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;
我正在尝试检查日期是否在 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
文字语法,它由关键字 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;