我想使用標準 SQL 獲取資料庫的當前時間。結果必須是 UTC 或帶有時區資訊。那可能嗎?如果是,如何?
顯然,有 CURRENT_TIMESTAMP,它是 ANSI SQL,但是否有 ANSI SQL 語法來檢索它?一些 DBMS 支持select CURRENT_TIMESTAMP,另一些則需要select CURRENT_TIMESTAMP from DUAL. 有什么辦法可以做到這一點與 DBMS 無關?
uj5u.com熱心網友回復:
簡答:
沒有標準功能可以做到這一點(據我所知)。每個供應商都實作了自己的功能來處理日期和時間,包括檢索當前時間。
可能的解決方案(假設您可以控制資料庫):
您可以使用(或代理函式)供應商特定函式創建包含一條記錄的視圖,并將其用作應用程式中的源。
例如(SQL Server)
CREATE VIEW dbo.[DateTime] AS
SELECT
SYSUTCDATETIME() AS UTCDateTime
;
或在(MySQL)
CREATE VIEW DateTime AS
SELECT
UTC_TIMESTAMP as UTCDateTime
;
uj5u.com熱心網友回復:
在ANSI / ISO SQL標準已經CURRENT_TIME得到時間與時區資訊,并LOCALTIME獲取時間沒有時區資訊。
但是,許多產品反而具有自己的功能。
uj5u.com熱心網友回復:
假設您使用 SQL 服務器:
SELECT CONVERT(varchar(10), GETUTCDATE(), 108)
uj5u.com熱心網友回復:
執行此操作的 ANSI SQL 方法是使用VALUES陳述句。這類似于SELECT陳述句,因為它回傳一個結果集。但它不參考任何表。這是執行類似于 OracleDUAL偽表用途的標準方法。
這是使用 MySQL 8.0 的演示:
mysql> VALUES ROW(CURRENT_TIMESTAMP);
---------------------
| column_0 |
---------------------
| 2021-11-22 14:56:58 |
---------------------
看:
- https://dev.mysql.com/doc/refman/8.0/en/values.html
- https://modern-sql.com/feature/values
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363132.html
標籤:sql
下一篇:從日期列計算前一個星期日的日期?
