![](/img/trans.png)
[英]How do I find all records with timestamp older than 120 days ago in 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.