SQL - SYSUTCDATETIME() 函式



SQL 的SYSUTCDATETIME() 函式是日期函式之一,用於返回最新的系統時間戳作為 datetime2 值。此 SYSUTCDATETIME 函式的返回值是當前協調世界時 (UTC 時間)。此外,它來自 SQL Server 例項正在執行的計算機的作業系統 (OS)。

SYSUTCDATETIME() 方法以 yyyy-mm-dd hh:mi:ss.mmmmmmm 的格式返回系統時間和日期。我們可以觀察到 SYSUTCDATETIME() 和 GETUTCDATE() 都返回 SQL Server 正在執行的計算機的相同日期和時間。但是,它們只有一點不同。

  • GETUTCDATE() 將其值返回為 datetime

  • SYSUTCDATETIME() 將其值返回為 datetime2

這表明 SYSUTCDATETIME() 提供了更高的秒精度。datetime2 資料型別比 datetime 具有更大的範圍。

語法

以下是 SQL SYSUTCDATETIME() 函式的語法 -

SYSUTCDATETIME()

引數

此函式不接受任何引數。

示例

在以下示例中,我們嘗試檢索當前 UTC 日期和時間 -

SELECT GETUTCDATE() AS UTCTimeDate;

輸出

當我們執行上述查詢時,輸出如下所示 -

+-------------------------+
| UTCTimeDate             |
+-------------------------+
| 2023-02-20 05:28:27.850 |
+-------------------------+

示例

在以下示例中,我們使用 convert() 函式和 sysutcdatetime() 函式將輸出轉換為僅當前 UTC 日期。

SELECT CONVERT(DATE, SYSUTCDATETIME()) AS UTCDate;

輸出

執行上述查詢後,輸出將顯示如下 -

+------------+
| UTCDate    |
+------------+
| 2023-02-20 |
+------------+

示例

讓我們來看另一個示例,其中我們使用CONVERT() 函式和 sysutcdatetime() 函式透過以下查詢將輸出轉換為僅當前時間 -

SELECT CONVERT(TIME, SYSUTCDATETIME()) AS UTCTime;

輸出

上述查詢的輸出如下所示 -

+------------------+
| UTCTime          |
+------------------+
| 05:34:33.0180845 |
+------------------+

示例

在這裡,我們使用FORMAT() 函式格式化我們需求的日期,使用以下查詢 -

SELECT FORMAT(SYSUTCDATETIME(), 'dd MMMM yyyy, hh:mm tt') AS Result;

輸出

查詢執行後,將生成如下所示的輸出 -

+----------------------------+
| Result                     |
+----------------------------+
| 20 February 2023, 05:39 AM |
+----------------------------+

示例

在以下示例中,我們使用 sysutcdatetime() 分配給任何日期和時間型別的變數 -

DECLARE @UTC date = SYSUTCDATETIME(); 
SELECT @UTC AS 'UTC Date';

輸出

執行上述查詢後,將生成如下所示的輸出 -

+------------+
| UTCDate    |
+------------+
| 2023-02-20 |
+------------+

示例

檢視以下示例,我們將使用DATEPART() 僅獲取返回值的一部分。執行以下查詢以僅從 sysutcdatetime() 中檢索毫秒 -

SELECT DATEPART(millisecond, SYSUTCDATETIME()) AS MilliSeconds;

輸出

如果我們執行上述查詢,則結果將如下所示 -

+--------------+
| MilliSeconds |
+--------------+
| 861          |
+--------------+

示例

在這裡,我們使用DATEPART() 並透過執行以下查詢檢索 sysutcdatetime() 中的微秒 -

SELECT DATEPART(microsecond, SYSUTCDATETIME()) AS MicroSeconds;

輸出

執行上述查詢後,將生成如下所示的輸出 -

+--------------+
| MicroSeconds |
+--------------+
| 121364       |
+--------------+

示例

在以下示例中,我們使用DATENAME() 函式顯示當前日期的星期幾名稱 -

SELECT DATENAME(WEEKDAY, SYSUTCDATETIME()) AS Day;

輸出

執行上述查詢後,將生成如下所示的輸出 -

+--------+
| Day    |
+--------+
| Monday |
+--------+

示例

假設我們在 SQL 資料庫中使用 CREATE 語句建立了一個名為 Employees 的表,如下面的查詢所示 -

CREATE TABLE Employees(
   ID INT,
   Name VARCHAR(255),
   LoginStamp DATETIME2,
   PRIMARY KEY (ID)
);

現在,讓我們使用 INSERT 語句在 EMPLOYEE 表中插入一些記錄,如下面的查詢所示 -

INSERT INTO Employees VALUES (1, 'Shikhar','2019-10-25 09:20:38.4142345');
INSERT INTO Employees VALUES (2, 'Rana','2019-10-25 09:24:35.1231232');
INSERT INTO Employees VALUES (3, 'Ram','2019-10-25 09:25:24.3214589');

我們可以使用以下查詢驗證表 IPLPlayers 是否已建立 -

SELECT * FROM Employees;

表 Employees 已在 SQL 資料庫中成功建立 -

+----+------------+----------------------------+
| ID | Name       | LoginStamp                 |
+----+------------+----------------------------+
| 1  | Shikhar    | 2019-10-25 09:20:38.4142345|
| 2  | Rana       | 2019-10-25 09:24:35.1231232|
| 3  | Ram        | 2019-10-25 09:25:24.3214589|
+----+------------+----------------------------+

現在,我們將使用 sysutcdatetime() 透過執行以下查詢向 Employees 表中新增包含新員工的行 -

INSERT INTO Employees VALUES (4, 'Suresh', SYSUTCDATETIME());

驗證

要檢查該行是否已插入,請使用以下查詢 -

SELECT * FROM Employees;

輸出

當我們執行上述查詢時,輸出如下所示 -

+----+------------+----------------------------+
| ID | Name       | LoginStamp                 |
+----+------------+----------------------------+
| 1  | Shikhar    | 2019-10-25 09:20:38.4142345|
| 2  | Rana       | 2019-10-25 09:24:35.1231232|
| 3  | Ram        | 2019-10-25 09:25:24.3214589|
| 4  | Suresh     | 2023-02-20 06:51:03.2998780|
+----+------------+---------------+------------+
sql-date-functions.htm
廣告