SQL SYSUTCDATETIME() 函数
SQL SYSUTCDATETIME() 函数是 Date Functions 中的一个,用于返回最近的系统时间戳作为 datetime2 值。SYSUTCDATETIME 函数的返回值是当前的协调通用时间(UTC 时间),它来自 SQL Server 实例所在的计算机操作系统(OS)。
SYSUTCDATETIME() 方法以 yyyy-mm-dd hh:mi:ss.mmmmmmm 格式返回系统时间和日期,我们可以观察到 SYSUTCDATETIME() 和 GETUTCDATE() 返回的是 SQL 服务器所在计算机的相同日期和时间。但它们只有一个不同之处。
- 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 |
+--------+
示例
假设我们使用CREATE语句在SQL数据库中创建了一个名为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|
+----+------------+---------------+------------+