Postgresql

使用來自另一列的轉換後的紀元時間戳更新記錄

  • February 18, 2020

我正在嘗試將一列(timestamp_epoch)中的紀元數據轉換為表中每條記錄的另一列(timestamp)中的合法時間戳。在閱讀 PostgreSQL 文件時,我似乎可以使用 to_timestamp() 函式執行此操作,但我收到一個錯誤,表明此函式不存在。

UPDATE table
SET timestamp = to_timestamp(timestamp_epoch) AT TIME ZONE 'EST'
WHERE timestamp IS NULL;

伺服器是 PostgreSQL 12.1,我使用 pgAdmin4 來執行查詢。當查詢執行時,我收到一個錯誤,表明該函式不存在,並且我可能需要添加顯式類型轉換……如果確實需要,我不知道如何正確執行。

ERROR:  function to_timestamp(text) does not exist
LINE 2: SET timestamp = to_timestamp(timestamp_epoch)
                       ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 56

感謝您將一列中的紀元數據轉換為另一列中的合法時間戳的任何幫助。

謝謝!

timestamp_epoch是用數據類型定義的text(這是“函式 to_timestamp( text ) 不存在”告訴你的)。

您需要首先將您的文本值轉換為bigint

to_timestamp(timestamp_epoch::bigint) AT TIME ZONE 'EST'

引用自:https://dba.stackexchange.com/questions/259869