簡體   English   中英

如何更新 firebird 時間戳字段以刪除毫秒部分?

[英]How do I update a firebird timestamp field to remove milliseconds part?

我可以執行一個簡單的更新語句來更新 firebird 數據庫中的時間戳字段以刪除毫秒部分。

所以當前值是:9-DEC-2013 8:55:57.3560 我想把它更新為:9-DEC-2013 8:55:57.0000

我需要一個基於舊時間戳計算新時間戳的通用更新語句。

Firebird 中沒有標准功能可以做到這一點。 然而,在內置函數EXTRACTDATEADD幫助下,您將能夠構建它。

DATEADD(-1 * EXTRACT(MILLISECOND FROM theTimestamp) MILLISECOND TO theTimestamp)

此解決方案的唯一問題是,如果您的時間戳有 100 微秒部分,它就無法正常工作,如DATEADD的文檔所述:

<amount> ::= 一個整數表達式(負數減去)

並且 100 微秒部分是數量的小數部分,不能以這種方式更改。 我已提交票證CORE-4457以進行更改,從 Firebird 3 開始, DATEADD(... MILLISECOND TO ...)現在將接受小數值。

但是,由於許多客戶端庫僅使用或支持毫秒精度,這可能不會影響您(即使內置CURRENT_TIMECURRENT_TIMESTAMP僅限於毫秒精度)。

您可以使用EXTRACT()內部函數。

v_TimeIn = cast(extract(Hour from v_TimeIn)||':'|| extract(minute from v_TimeIn) as Time);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM