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
广告