H2 数据库删除早于特定日期的记录
H2 Database Delete Records Older than particular Days
我必须通过匹配 completed_date
列与当前时间戳相差大于 1(或天数)的天数来删除 H2 数据库中的所有记录。
completed_date
以给定格式 11-Jan-2018 15:35:30 PM
即 'dd-MMM-yyyy HH:mm:ss aaa'
格式存储为字符串的数据库架构存在一个问题。
status需要匹配的参数还有一些。
我收到这个异常
Cannot parse "TIMESTAMP" constant "28-12-2017 03:12:47"; SQL statement:
我写的查询如下。
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 的更多信息,它是内部使用 h2 数据库的 RPA 工具,所以如果来自 workfusion 的任何人也可以帮助我。
timestampdiff()
将两个时间戳作为输入,但是您传递的是一个字符串和一个时间戳。因此,字符串会使用某种默认格式转换回时间戳。
您应该使用:
TIMESTAMPDIFF(DAY,PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss aaa'), CURRENT_TIMESTAMP())
(假设parsedatetime()
能成功解析字符串)
我必须通过匹配 completed_date
列与当前时间戳相差大于 1(或天数)的天数来删除 H2 数据库中的所有记录。
completed_date
以给定格式 11-Jan-2018 15:35:30 PM
即 'dd-MMM-yyyy HH:mm:ss aaa'
格式存储为字符串的数据库架构存在一个问题。
status需要匹配的参数还有一些。
我收到这个异常
Cannot parse "TIMESTAMP" constant "28-12-2017 03:12:47"; SQL statement:
我写的查询如下。
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 的更多信息,它是内部使用 h2 数据库的 RPA 工具,所以如果来自 workfusion 的任何人也可以帮助我。
timestampdiff()
将两个时间戳作为输入,但是您传递的是一个字符串和一个时间戳。因此,字符串会使用某种默认格式转换回时间戳。
您应该使用:
TIMESTAMPDIFF(DAY,PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss aaa'), CURRENT_TIMESTAMP())
(假设parsedatetime()
能成功解析字符串)