![](/img/trans.png)
[英]How do I convert Unix timestamp in milliseconds to a Timestamp compatible with PostgreSQL?
[英]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 中沒有標准功能可以做到這一點。 然而,在內置函數EXTRACT
和DATEADD
幫助下,您將能夠構建它。
DATEADD(-1 * EXTRACT(MILLISECOND FROM theTimestamp) MILLISECOND TO theTimestamp)
此解決方案的唯一問題是,如果您的時間戳有 100 微秒部分,它就無法正常工作,如DATEADD
的文檔所述:
<amount>
::= 一個整數表達式(負數減去)
並且 100 微秒部分是數量的小數部分,不能以這種方式更改。 我已提交票證CORE-4457以進行更改,從 Firebird 3 開始, DATEADD(... MILLISECOND TO ...)
現在將接受小數值。
但是,由於許多客戶端庫僅使用或支持毫秒精度,這可能不會影響您(即使內置CURRENT_TIME
和CURRENT_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.