[英]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.