簡體   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