Oracle

將 Unix 時間戳轉換為視圖中的 DATETIME

  • September 17, 2015

我有一個儲存 unix 時間戳的表。要將其作為日期查詢,我正在嘗試將此時間戳轉換為視圖中的日期時間類型。不幸的是,我似乎只能取出 DATE 部分。

此連結描述瞭如何進行轉換,但需要更改nls_date_format以包含時間部分。目前預設僅顯示日期部分。我需要日期和時間。

不幸的是,該解決方案僅適用於會話級別。作為一名開發人員,我寧願不必跑到我們的託管服務提供商那裡要求他們更改數據庫級別的值——尤其是因為它可能會影響其他應用程序。

有沒有一種方法可以在不修改系統的情況下將 sql 中的時間戳轉換為日期時間?

表達式的結果

to_date('1970-01-01','YYYY-MM-DD') + numtodsinterval(1244108886,'SECOND')

是 oracle 數據類型 DATE 的值。此類型包含日期和時間。如果要向使用者顯示此值,則必須將其轉換為字元串。這種轉換可以由應用程序完成,或者您可以讓 oracle 將其轉換為字元串類型,就像在本範例中所做的那樣。這種到 oracle 字元串類型 VARCHAR2 的自動轉換由 nls_date_format 和一些伺服器設置控制。如果您希望視圖返回 VARCHAR2 值,其計算日期格式為 ‘YYYY-MM-DD HH24:MI:SS’ 而不是 DATE 值,您可以使用轉換函式執行此操作:表達式

to_char(to_date('1970-01-01','YYYY-MM-DD') + numtodsinterval(1244108886,'SECOND'),'YYYY-MM-DD HH24:MI:SS')

但在這種情況下,視圖的返回值是 VARCHAR2 而不是 DATE 值。

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