SQL CURRENT_TIMESTAMP函数
SQL CURRENT_TIMESTAMP 函数是一个内置函数,它以datetime值的形式检索当前数据库系统的时间戳,不包含数据库时区偏移量。该函数从运行SQL Server实例的计算机的操作系统中获取datetime值。时间戳的默认格式为yyyy:mm:dd hh:mm:ss.mmm。
时间戳的默认格式为 yyyy:mm:dd hh:mm:ss.mmm 。我们还可以使用SQL format()函数来修改时间戳的格式。
此函数与SQL GETDATE()函数类似。建议使用CURRENT_TIMESTAMP函数替代GETDATE()函数。
语法
以下是SQL CURRENT_TIMESTAMP 函数的语法:
CURRENT_TIMESTAMP
参数
此函数不接受任何参数。
示例
在以下示例中,我们尝试使用以下查询检索当前日期和时间 –
SQL> SELECT CURRENT_TIMESTAMP AS CURRENT_DATE_AND_TIME;
输出
当我们执行上述查询时,输出结果如下所示-
+--------------------------+
| CURRENT_DATE_AND_TIME |
+--------------------------+
| 2023-02-15 16:57:38.100 |
+--------------------------+
示例
以下查询将当前日期和时间增加10天 –
SQL> SELECT CURRENT_TIMESTAMP + 10 AS CURRENT_DATE_AND_TIME;
输出
执行上述查询后,输出如下所示−
+--------------------------+
| CURRENT_DATE_AND_TIME |
+--------------------------+
| 2023-02-25 16:57:38.100 |
+--------------------------+
示例
下面的查询从当前日期和时间中减去14天 –
SQL> SELECT CURRENT_TIMESTAMP - 14 AS CURRENT_DATE_AND_TIME;
输出
对于上述查询的输出如下所示:
+--------------------------+
| CURRENT_DATE_AND_TIME |
+--------------------------+
| 2023-02-01 16:57:38.100 |
+--------------------------+
示例
在下面的示例中,我们将改变CURRENT_TIMESTAMP的格式为 dd-MM-yyyy hh:mm:ss -
SQL> SELECT FORMAT(CURRENT_TIMESTAMP, 'dd-MM-yyyy hh:mm:ss') AS CURRENT_DATE_AND_TIME;
输出
如果我们执行上述查询,结果如下所示 –
+-------------------------+
| CURRENT_DATE_AND_TIME |
+-------------------------+
| 15-02-2023 05:11:41 |
+-------------------------+
示例
我们还可以使用CURRENT_TIMESTAMP作为DATEDIFF()函数的参数。让我们使用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');
我们可以使用以下查询验证表 EMPLOYEE 是否已创建 –
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 |
+-----+--------+----------------+
我们可以使用以下查询计算每个员工的年龄(以年为单位)−
注意 − CURRENT_TIMESTAMP 检索此刻的日期和时间。
SQL> SELECT ID, NAME, DATE_OF_BIRTH, DATEDIFF(YEAR, DATE_OF_BIRTH, CURRENT_TIMESTAMP) 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 |
+-----+--------+----------------+--------------+
示例
让我们使用CREATE语句在SQL数据库中创建一个名为NETFLIX的另一个表,如下所示的查询中−
SQL> CREATE TABLE NETFLIX(ID INT NOT NULL, SUBSCRIBER_NAME VARCHAR (200) NOT NULL, MEMBERSHIP VARCHAR (200), SUBCRIPTION_DATE DATE NOT NULL);
现在,让我们使用INSERT语句将一些记录插入到NETFLIX表中,如下所示的查询中:
SQL> INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(1, 'Dhruv', 'Silver', '2022-12-05');
INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(2, 'Arjun','Platinum', '2021-03-01');
INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(3, 'Dev','Silver', '2021-03-15');
INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(4, 'Riya','Gold', '2022-12-05');
INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(5, 'Aarohi','Platinum', '2020-05-02');
INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(6, 'Lisa','Platinum', '2022-11-25');
INSERT INTO NETFLIX(ID, SUBSCRIBER_NAME, MEMBERSHIP, SUBCRIPTION_DATE) VALUES(7, 'Roy','Gold', '2021-05-30');
我们可以使用以下查询来验证表NETFLIX是否已创建:
SQL> SELECT * FROM NETFLIX
在SQL数据库中成功创建了名为NETFLIX的表。
+-----+-----------------+------------+------------------+
| 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 |
+-----+-----------------+------------+------------------+
我们可以使用以下查询显示订阅计划完成的剩余天数 –
SQL> SELECT SUBSCRIBER_NAME, SUBCRIPTION_DATE, DATEDIFF(DAY, SUBCRIPTION_DATE, CURRENT_TIMESTAMP) AS REMAINING_DAYS FROM NETFLIX;
输出
如果我们执行上述查询,结果如下所示 –
+-----------------+-------------------+-----------------+
| SUBSCRIBER_NAME | SUBSCRIPTION_DATE | REMAINING_DAYS |
+-----------------+-------------------+-----------------+
| Dhruv | 2022-12-05 | 72 |
| Arjun | 2021-03-01 | 716 |
| Dev | 2021-03-15 | 702 |
| Riya | 2022-12-05 | 72 |
| Aarohi | 2020-05-02 | 1019 |
| Lisa | 2022-11-25 | 82 |
| Roy | 2021-05-30 | 626 |
+-----------------+-------------------+-----------------+