我必须通过将completed_date
列与当前时间戳(天差大于1(或天数))匹配来从H2数据库中删除所有记录。
数据库模式存在一个问题,completed_date
以给定格式11-Jan-2018 15:35:30 PM
,即'dd-MMM-yyyy HH:mm:ss aaa'
的形式存储为字符串。
还有更多应与状态匹配的参数。
我收到此异常
无法解析“ TIMESTAMP”常量“ 28-12-2017 03:12:47”; SQL语句:
我写的查询如下。
delete from TABLE_NAME
where
status = 'status1'
OR status = 'status2'
OR status = 'status3'
AND
TIMESTAMPDIFF(DAY,TO_CHAR(PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss
aaa'),'dd-MM-yyyy HH:mm:ss'),CURRENT_TIMESTAMP()) >= 1;
在上面的查询中,我发现TIMESTAMPDIFF不适用于日期格式dd-MMM-yyyy HH:mm:ss aaa,因此首先我尝试将其解析为'dd-MM-yyyy HH:mm:ss'格式如果在下面的查询中使用此查询,它将为我提供适当的结果
SELECT TO_CHAR(PARSEDATETIME('2017-OCT-2017 15:49:47 PM','dd-MMM-yyyy
HH:mm:ss aaa')
,'dd-MM-yyyy HH:mm:ss')
仅提供一些更多信息,我正在编码Workfusion,它是RPA工具,内部使用h2-数据库,因此,如果这里有来自Workfusion的人员,他们也可以为我提供帮助。
答案 0 :(得分:1)
timestampdiff()
将两个时间戳记作为输入,但是您正在传递字符串和时间戳记。因此,该字符串会使用某种默认格式转换回时间戳。
您应该使用:
TIMESTAMPDIFF(DAY,PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss aaa'), CURRENT_TIMESTAMP())
(假设parsedatetime()
可以成功解析字符串)