我有一个带有日期字段 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'
如何将此日期字段与特定日期时间进行比较?
答案 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)
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
SELECT *
FROM DATA_RUN
WHERE time_process >= TIMESTAMP '2021-01-11 05:00:00'
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
列。