[英]Is 'INDEX' valid SQL ANSI ISO standard keyword / reserved word?
[英]Is there an ANSI/ISO SQL syntax to obtain the current time?
我想使用標准 SQL 獲取數據庫的當前時間。 結果必須是 UTC 或帶有時區信息。 那可能嗎? 如果是,如何?
顯然,有 CURRENT_TIMESTAMP,即 ANSI SQL,但是否有 ANSI SQL 語法來檢索它? 一些 DBMS 支持select CURRENT_TIMESTAMP
,其他需要select CURRENT_TIMESTAMP from DUAL
。 有什么方法可以做到這一點獨立於 DBMS?
簡短的回答:
沒有標准的 function 可以做到這一點(據我所知)。 每個供應商都實現了自己的函數來處理日期和時間,包括檢索當前時間。
可能的解決方案(假設您可以控制數據庫):
您可以使用(或 function 代理)供應商特定的 function 創建包含一條記錄的視圖,並將其用作應用程序中的源。
例如(SQL 服務器)
CREATE VIEW dbo.[DateTime] AS
SELECT
SYSUTCDATETIME() AS UTCDateTime
;
或在(MySQL)
CREATE VIEW DateTime AS
SELECT
UTC_TIMESTAMP as UTCDateTime
;
ANSI/ISO SQL 標准具有CURRENT_TIME
以獲取具有時區信息的時間,並LOCALTIME
以獲取不具有時區信息的時間。
但是,許多產品都有自己的功能。
假設您使用 SQL 服務器:
SELECT CONVERT(varchar(10), GETUTCDATE(), 108)
執行此操作的 ANSI SQL 方法是使用VALUES
語句。 這類似於SELECT
語句,因為它返回一個結果集。 但它沒有引用任何表格。 這是執行類似於 Oracle 的DUAL
偽表的標准方法。
這是使用 MySQL 8.0 的演示:
mysql> VALUES ROW(CURRENT_TIMESTAMP);
+---------------------+
| column_0 |
+---------------------+
| 2021-11-22 14:56:58 |
+---------------------+
看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.