我有一个我正在尝试使用的查询 TO_DATE
检查是否 ERROR_DT
是一个在当前时间一小时内的数据,这是我到目前为止得到的
SELECT BERROR_DT FROM SomeTable
WHERE ERROR_DT>=TO_CHAR(TO_DATE( SYSDATE, 'MM/DD/YYYY HH12:MI:SS AM') -1, 'fmMM/DDfm/YYYY HH12:MI:SS AM');
``` `Error_DT` 值(例如) `5/18/2020 6:45:15 PM` 当我运行这个时
ORA-01830: date format picture ends before converting entire input string
我遵循了上述链接,但它仍然不起作用。如何修复此问题,以便仍然可以删除月份和日期前的所有0?
3条答案
按热度按时间nnt7mjpx1#
我建议将日期字符串转换为相应的
date
值,然后进行比较:总之,您应该修复数据模型,并将日期存储为类似日期的数据类型,而不是字符串。上面的 predicate 是无效的,因为转换需要为的每个值执行
error_dt
在应用筛选之前,因此会破坏列上的现有索引。doinxwow2#
显然你做的不对的事就是申请
TO_DATE
至SYSDATE
这是一个返回DATE
数据类型。你能做的就是减法
sysdate
以及error_dt
(我假设它的数据类型是DATE
以及)并查看差异是否小于1小时。因为两个日期的差值是天数,所以必须将其除以24(因为一天有24小时)。像这样:
az31mfrm3#
如果error\u dt是一个日期值,您只需要使用
或者如果你更喜欢使用老式的间隔前计算