T-Sql
如何在 Azure Synapse 中將 TIMESTAMP 轉換為 BIGINT
在 Azure Synapse 中將 TIMESTAMP 轉換為 BIGINT 的最佳方法是什麼。我試過這個(有效),但看起來很笨拙。有沒有更好、更簡潔、更有效的方法來做同樣的事情?
SELECT CURRENT_TIMESTAMP AS CURR_TS, CONVERT(BIGINT, CONVERT(CHAR(8), CURRENT_TIMESTAMP, 112) + REPLACE(CONVERT(CHAR(12), CURRENT_TIMESTAMP, 114), ':', '')) AS CURR_TS_NUM
稍微緊湊一點,只需一次呼叫
CURRENT_TIMESTAMP
,就可以用CONVERT
它的格式開關(121)和TRANSLATE
和REPLACE
來整理。這將語句從六個單獨的函式呼叫減少到四個。您也可以使用FORMAT
,它只有兩個函式呼叫:SELECT CURRENT_TIMESTAMP ts, REPLACE( TRANSLATE( CONVERT( CHAR(23), CURRENT_TIMESTAMP, 121 ), '-:.', ' ' ), ' ', '' ) c1, FORMAT( CURRENT_TIMESTAMP , 'yyyyMMddHHmmssfff' ) c2
但是,我會詢問是否需要儲存這些值。您可能應該為事件記錄儲存傳統的時間戳,那麼為什麼還要以編碼方式儲存這種形式的時間戳,如果您想使用它必須解壓縮呢?記錄到具有標識列的表具有類似的效果。需要考慮的事情。