sql - H2 数据库删除早于特定日期的记录
问题描述
我必须通过将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 的任何人,他们也可以帮助我。
解决方案
timestampdiff()
将两个时间戳作为输入,但是您要传递一个字符串和一个时间戳。因此,字符串会使用某种默认格式转换回时间戳。
你应该使用:
TIMESTAMPDIFF(DAY,PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss aaa'), CURRENT_TIMESTAMP())
(假设parsedatetime()
可以成功解析字符串)
推荐阅读
- android - Gradle 错误:无法解决:com.google.firebase:firebase-core:16.0.1
- javascript - webpack 4 多组条目,每个条目都有唯一的代码拆分
- powerbi - RANKX 函数在 Power BI 中生成笛卡尔积
- aurelia - 通过 aurelia 验证,有没有办法要求一个或另一个表单字段?(见注释代码)?
- python - 如何从 COCO 数据集创建掩码图像?
- python - Python 3.x:将 utf-8 字符串写入二进制 txt 文件时出现问题
- php - 模型方法“addError”在 yii2 中不起作用
- rspec - 在水豚中运行每个场景时如何打印场景名称
- sql-server - 在许多条件下,基于集合的计划运行速度比标量值函数慢
- bigcommerce - Stencil-CLI 已过时,不会升级