如何在oracle 11g中选择日期25-11-20的所有条目?



sql table

在上面名为carpooling的表中包含一个列名称start_on,其日期时间作为时间戳。我必须使用to_char和to_date来编写查询以选择日期为25-11-20的所有行。

时间戳文字如下:

timestamp '2020-11-25 00:00:00'

所以完整的过滤条件将是

where start_on >= timestamp '2020-11-25 00:00:00'
and   start_on <  timestamp '2020-11-26 00:00:00'

请注意,Oracle中的日期和时间戳是不同的,日期包括精确到秒的时间(这是由于历史原因—最初只有date类型,timestamp是后来添加的)。

使用TRUNC函数,以及日期和间隔文字:

SELECT *
FROM CARPOOLING
WHERE START_ON BETWEEN DATE '2020-11-25'
AND (DATE '2020-11-26' - INTERVAL '0.000001' SECOND)

您可以简单地使用to_date,但建议在比较日期时删除时间。否则,将不会选择具有相同日期但不同时间的行。可以使用TRUNC删除时间。所以你可以这样做:

SELECT * FROM carpooling
WHERE TRUNC(start_on) = TO_DATE('2020-11-25','yyyy.mm.dd');

如果您不想检查2020年11月25日,而是另一个数据,请更改日期以匹配您的目标。

相关内容

最新更新