将日期字段与 oracle 中的特定日期时间进行比较

时间:2021-01-11 07:48:40

标签: sql oracle datetime

我有一个带有日期字段 2021/01/11 的表格,例如 time_process

我要选择的记录有 '1/11/2021 5:10:16 AM' 但是当我查询时:

time_process >= '1/11/2021 05:00:00 AM'

有错误:

select * from DATA_RUN where time_process >= '1/11/2021 05:00:00 AM'

如何将此日期字段与特定日期时间进行比较?

2 个答案:

答案 0 :(得分:1)

您应该使用 to_date 将字符串转换为日期,如下所示:

select * from DATA_RUN 
   where time_process >= To_date('01/11/2021 05:00:00 AM', 'mm/dd/yyyy hh:mi:ss AM')

答案 1 :(得分:1)

选项 1 - 日期和间隔文字:

SELECT *
FROM   DATA_RUN
WHERE  time_process >= DATE '2021-01-11' + INTERVAL '05:00:00' HOUR TO SECOND

或者,由于您没有任何分钟或秒,那么您可以使用:

WHERE  time_process >= DATE '2021-01-11' + INTERVAL '5' HOUR

选项 2 - 时间戳文字:

SELECT *
FROM   DATA_RUN
WHERE  time_process >= TIMESTAMP '2021-01-11 05:00:00'

选项 3 - 使用 TO_DATE 函数转换字符串:

SELECT *
FROM   DATA_RUN
WHERE  time_process >= TO_DATE( '1/11/2021 05:00:00 AM', 'MM/DD/YYYY HH12:MI:SS AM' )

顺便说一句,

<块引用>

我有一个带有日期字段 time_process 的表格,例如 '1/11/2021 5:10:16 AM'

DATE 列没有格式,因为它以由 7-bytes(世纪、世纪年、月、日、小时、分钟和秒)组成的二进制格式在内部存储。格式化 DATE 的值由用户界面决定;对于 SQL/Plus 和 SQL Developer(以及其他),这由 NLS_DATE_FORMAT 会话参数决定,但每个用户都可以随时在每个会话中设置自己的值,因此您不能假设会有一致的格式化为 DATE 列。