繁体   English   中英

H2数据库删除记录早于特定日期

[英]H2 Database Delete Records Older than particular Days

我必须通过将completed_date列与当前时间戳(天差大于1(或天数))匹配来从H2数据库中删除所有记录。

数据库的模式存在一个问题,已completed_date日期以给定格式存储为String,日期为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的人员,他们也可以为我提供帮助。

timestampdiff()需要两个时间戳作为输入,但是您要传递一个字符串和一个时间戳。 因此,使用某种默认格式将字符串转换回时间戳。

您应该使用:

TIMESTAMPDIFF(DAY,PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss aaa'), CURRENT_TIMESTAMP())

(假设parsedatetime()可以成功解析字符串)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM