SQL GETUTCDATE() 函数
SQL 的 GETUTCDATE() 函数用于返回当前的协调世界时(UTC)日期和时间。
UTC 代表协调世界时,是全球通用的标准时间参考。当我们想要在数据库中记录事件或事务并确保它们在全球不同时区下是准确和标准化的时,该函数非常有用。这使得我们能够轻松分析数据,无论数据记录的位置在哪里。
语法
SQL GETUTCDATE() 函数的语法如下:
GETUTCDATE()
参数
此函数不接受任何参数。
示例
下面的示例演示了使用GETUTCDATE()函数的用法-
SQL> SELECT GETUTCDATE() AS GETUTCDATE_RESULT;
输出
当我们执行以上查询时,可以得到如下输出结果:
+-------------------------+
| GETUTCDATE_RESULT |
+-------------------------+
| 2023-02-17 06:36:37.143 |
+-------------------------+
示例
SQL GETUTCDATE()函数的结果格式为yyyy-mm-dd hh:mm:ss.mmm。现在,让我们使用以下查询自定义结果格式 –
SQL> SELECT FORMAT(GETUTCDATE(),'dd-mm-yyyy hh:mm:ss tt') AS FORMAT_DATE_AND_TIME
输出
如果我们执行以上查询,结果如下所示−
+------------------------+
| FORMAT_DATE_AND_TIME |
+------------------------+
| 17-37-2023 06:37:45 AM |
+------------------------+
示例
我们可以使用CONVERT()函数从GETUTCDATE()函数的结果中返回日期或时间部分。
SQL> SELECT CONVERT(DATE, GETUTCDATE()) AS CURRENT_UTC_DATE,
CONVERT(TIME, GETUTCDATE()) AS CURRENT_UTC_TIME;
输出
执行上述查询后,输出结果如下所示:
+------------------+------------------+
| CURRENT_UTC_DATE | CURRENT_UTC_TIME |
+------------------+------------------+
| 2023-02-17 | 06:41:54.0800000 |
+------------------+------------------+
示例
在这里,我们尝试从GETUTCDATE()函数的结果中添加和减去天数。
SQL> SELECT GETUTCDATE() +10 AS DATE_ADD, GETUTCDATE() -15 AS DATE_SUB;
输出
当我们执行上面的查询时,输出结果如下所示 –
+-------------------------+-------------------------+
| DATE_ADD | DATE_SUB |
+-------------------------+-------------------------+
| 2023-02-27 06:44:32.183 | 2023-02-02 06:44:32.183 |
+-------------------------+-------------------------+
示例
使用SQL中的GETDATE()函数和DAY、MONTH和YEAR函数可以从GETDATE()函数的结果中显示当前的日、月和年。
SQL> SELECT YEAR(GETUTCDATE()) AS [YEAR], MONTH(GETUTCDATE()) AS [MONTH], DAY(GETUTCDATE()) AS [DAY];
输出
如果我们执行以上查询,结果如下:
+------+-------+-----+
| YEAR | MONTH | DAY |
+------+-------+-----+
| 2023 | 2 | 17 |
+------+-------+-----+
示例
假设我们使用以下查询中显示的CREATE语句,在SQL数据库中创建了一个名为EMPLOYEE的表:
SQL> CREATE TABLE EMPLOYEE(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, DATE_OF_BIRTH VARCHAR (20));
现在,让我们使用INSERT语句将一些记录插入EMPLOYEE表中,如下所示的查询:
SQL> INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(1, 'Dhruv', '2000-12-05');
INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(2, 'Arjun', '2000-03-01');
INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(3, 'Dev', '2001-03-15');
INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(4, 'Riya', '2003-12-05');
INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(5, 'Aarohi', '2000-05-02');
INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(6, 'Lisa', '1999-11-25');
INSERT INTO EMPLOYEE(ID, NAME, DATE_OF_BIRTH) VALUES(7, 'Roy', '2001-05-30');
我们可以使用以下查询验证表是否已创建 –
SQL> SELECT * FROM EMPLOYEE;
成功在SQL数据库中创建了EMPLOYEE表。
+-----+--------+---------------+
| ID | NAME | DATE_OF_BIRTH |
+-----+--------+---------------+
| 1 | Dhruv | 2000-12-05 |
| 2 | Arjun | 2000-03-01 |
| 3 | Dev | 2001-03-15 |
| 4 | Riya | 2003-12-05 |
| 5 | Aarohi | 2000-05-02 |
| 6 | Lisa | 1999-11-25 |
| 7 | Roy | 2001-05-30 |
+-----+--------+---------------+
在以下查询中,我们正在计算每个员工的年龄(根据UTC日期和时间) −
注意 − 我们可以将 GETUTCDATE() 函数作为参数传递。
SQL> SELECT ID, NAME, DATE_OF_BIRTH, DATEDIFF(YEAR, DATE_OF_BIRTH, GETUTCDATE()) AS AGE_IN_YEARS FROM EMPLOYEE;
输出
当我们执行上面的查询时,输出结果如下:
+-----+--------+----------------+--------------+
| ID | NAME | DATE_OF_BIRTH | AGE_IN_YEARS |
+-----+--------+----------------+--------------+
| 1 | Dhruv | 2000-12-05 | 23 |
| 2 | Arjun | 2000-03-01 | 23 |
| 3 | Dev | 2001-03-15 | 22 |
| 4 | Riya | 2003-12-05 | 20 |
| 5 | Aarohi | 2000-05-02 | 23 |
| 6 | Lisa | 1999-11-25 | 24 |
| 7 | Roy | 2001-05-30 | 22 |
+-----+--------+----------------+--------------+
示例
让我们使用下面的查询,在SQL数据库中使用CREATE语句创建一个名为OTT的另一个表格。
SQL> CREATE TABLE OTT(ID INT NOT NULL, SUBSCRIBER_NAME VARCHAR (200) NOT NULL, MEMBERSHIP VARCHAR (200), SUBCRIPTION_DATE DATE NOT NULL);
现在,让我们使用以下的INSERT语句将一些记录插入OTT表中:
SQL> INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(1, 'Dhruv', 'Silver', '2022-12-05');
INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(2, 'Arjun','Platinum', '2021-03-01');
INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(3, 'Dev','Silver', '2021-03-15');
INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(4, 'Riya','Gold', '2022-12-05');
INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(5, 'Aarohi','Platinum', '2020-05-02');
INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(6, 'Lisa','Platinum', '2022-11-25');
INSERT INTO OTT(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(7, 'Roy','Gold', '2021-05-30');
我们可以使用以下查询来验证表OTT是否已创建:
SQL> SELECT * FROM OTT
在SQL数据库中,表OTT已成功创建。
+-----+-----------------+------------+------------------+
| ID | SUBSCRIBER_NAME | MEMBERSHIP | SUBSCRIPTION_DATE|
+-----+-----------------+------------+------------------+
| 1 | Dhruv | Silver | 2022-12-05 |
| 2 | Arjun | Platinum | 2021-03-01 |
| 3 | Dev | Silver | 2021-03-15 |
| 4 | Riya | Gold | 2022-12-05 |
| 5 | Aarohi | Platinum | 2020-05-02 |
| 6 | Lisa | Platinum | 2022-11-25 |
| 7 | Roy | Gold | 2021-05-30 |
+-----+-----------------+------------+------------------+
在以下查询中,我们尝试显示订阅计划到期的剩余小时数(根据UTC日期和时间)-。
SQL> SELECT SUBSCRIBER_NAME, SUBCRIPTION_DATE, DATEDIFF(HOUR, SUBCRIPTION_DATE, GETUTCDATE()) AS REMAINING_HOURS FROM OTT;
输出
如果我们执行上述查询,结果如下所示 –
+-----------------+-------------------+-----------------+
| SUBSCRIBER_NAME | SUBSCRIPTION_DATE | REMAINING_HOURS |
+-----------------+-------------------+-----------------+
| Dhruv | 2022-12-05 | 1782 |
| Arjun | 2021-03-01 | 17238 |
| Dev | 2021-03-15 | 16902 |
| Riya | 2022-12-05 | 1782 |
| Aarohi | 2020-05-02 | 24510 |
| Lisa | 2022-11-25 | 2022 |
| Roy | 2021-05-30 | 15078 |
+-----------------+-------------------+-----------------+