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日,而是另一个数据,请更改日期以匹配您的目标。