SQL 日期函数
在本教程中,我们将学习一些内建在SQL中的重要日期函数。
SQL中的日期函数:
- NOW()
- CURDATE()
- CURTIME()
- DATE()
- EXTRACT()
- DATE_ADD()
- DATE_SUB()
- DATEDIFF()
- DATE_FORMAT()
让我们逐个详细了解每个日期函数,并通过示例来了解。我们将在示例中使用MySQL数据库来编写查询。
假设我们有以下数据的学生表:
ID | Name | DateTime_Birth | City |
---|---|---|---|
1 | Mansi Shah | 2010-01-01 18:39:09 | Pune |
2 | Tejal Wagh | 2010-03-04 05:13:19 | Nasik |
3 | Sejal Kumari | 2010-05-01 10:31:07 | Mumbai |
4 | Sonal Jain | 2010-09-09 17:17:07 | Shimla |
5 | Surili Maheshwari | 2010-07-10 20:45:18 | Surat |
我们将在一些示例中使用这个表。
1. NOW()
SQL中的NOW()函数将提供当前系统的日期和时间。
语法:
SELECT NOW ();
例子:
编写一个查询以显示当前系统的日期和时间。
查询:
mysql> SELECT NOW () AS Current_Date_Time;
这里,我们使用NOW()函数编写了一个SELECT查询来获取系统的当前日期和时间。Current_Date_Time是用来存储日期和时间的别名。
在执行上述查询后,我们得到了以下输出结果:
Current_Date_Time
---
2021-10-24 18:28:44
查询在系统中执行的日期和时间是2021年10月24日18:28:44。因此,它作为输出显示。
2. CURDATE()
SQL中的CURDATE()函数将给出当前系统的日期。
语法:
SELECT CURDATE ();
示例:
编写一个查询来显示当前系统的日期。
查询:
mysql> SELECT CURDATE () AS CurrentDate;
在这里,我们使用CURDATE()函数编写了一个SELECT查询,以获取系统的当前日期。CurrentDate是一个别名,用于存储日期。
在执行上述查询之后,我们得到了以下输出:
CurrentDate
---
2021-10-24
系统中执行查询的日期是2021年10月24日。因此,它作为输出显示。
3. CURTIME()
CURTIME()函数在SQL中将给出当前系统时间。
语法:
SELECT CURTIME ();
示例:
编写一个查询来显示当前系统时间。
查询:
mysql> SELECT CURTIME () AS CurrentTime;
在这里,我们使用CURTIME()函数编写了一个SELECT查询来获取系统的当前时间。CurrentTime是一个用来存储时间的别名。
执行上述查询后,我们得到了以下输出:
CurrentTime
---
18:49:07
系统执行查询的时间是18:49:07。因此,它以输出形式显示。
4. DATE()
在SQL中使用DATE()函数,您可以从DATETIME数据类型列中明确提取日期。
语法:
SELECT DATE (DateTimeValue);
示例1:
编写一个查询以显示给定日期和时间的日期,即2021-10-24 18:28:44。
查询:
mysql> SELECT DATE ("2021-10-24 18:28:44") AS SHOW_DATE;
在这里,我们使用DATE()函数编写了一个SELECT查询,以从传递给DATE()函数的日期和时间参数中获取仅日期部分。SHOW_DATE是一个用于存储日期的别名。
在执行上述查询后,我们得到了以下输出结果:
SHOW_DATE
---
2021-10-24
从日期和时间参数即’2021-10-24 18:28:44’中,日期值为2021-10-24。因此,它显示为输出。
示例2:
编写一个查询来显示从学生表中的DateTime_Birth列获取的日期的所有详细信息。
查询:
mysql> SELECT ID, Name, DATE(DateTime_Birth) AS Date_of_Birth, City FROM student;
在这里,我们编写了一个SELECT查询来获取ID和Name。 Date_of_Birth是DateTime_Birth的别名。我们使用了DATE()函数将Date_of_Birth与只获取日期的功能一起使用。
执行上述查询后,我们得到了以下输出:
ID | Name | Date_of_Birth | City |
---|---|---|---|
1 | Mansi Shah | 2010-01-01 | Pune |
2 | Tejal Wagh | 2010-03-04 | Nasik |
3 | Sejal Kumari | 2010-05-01 | Mumbai |
4 | Sonal Jain | 2010-09-09 | Shimla |
5 | Surili Maheshwari | 2010-07-10 | Surat |
所有的记录都是从学生表中原样显示的,除了DateTime_Birth列。根据要求,只有日期显示在Date_of_Birth列中。
5. EXTRACT()
使用SQL中的EXTRACT()函数,我们可以根据要求提取日期和时间的特定部分:天、月、年、小时、分钟等等。
语法:
SELECT EXTRACT (PART FROM DATE / TIME);
示例1:
编写一个查询以显示给定日期的年份,即2021年10月24日。
查询:
mysql> SELECT EXTRACT (YEAR FROM "2021-10-24") AS SHOW_YEAR;
在这里,我们编写了一个带有EXTRACT()函数的SELECT查询来从给定日期中获取年份。SHOW_YEAR是一个别名,用于存储年份。
执行上述查询后,我们得到了以下输出:
SHOW_YEAR
---
2021
‘2021’是给定日期的年份。因此,它作为输出显示。
示例2:
编写一个查询来显示给定日期中的月份,即24 th 十月2021年。
查询:
mysql> SELECT EXTRACT (MONTH FROM "2021-10-24") AS SHOW_MONTH;
在这里,我们使用EXTRACT()函数编写了一个SELECT查询,用于从给定的日期中获取月份。SHOW_MONTH是一个别名,用于存储月份。
执行以上查询之后,我们得到了如下输出:
SHOW_MONTH
---
10
10th是给定日期中的月份值。因此,它作为输出显示。
示例3:
写一个查询,显示给定日期中的日子,即2021年10月24th。
查询:
mysql> SELECT EXTRACT (DAY FROM "2021-10-24") AS SHOW_DAY;
在这里,我们使用EXTRACT()函数编写了一个SELECT查询,以从给定日期中获取日期。SHOW_DAY是一个别名,用于存储日期。
执行上述查询后,我们得到以下输出:
SHOW_DAY
---
24
24 日 是给定日期的日期值。因此,它作为输出显示。
示例4:
编写查询以显示给定时间的小时,即19:10:43。
查询:
mysql> SELECT EXTRACT (HOUR FROM "19:10:43") AS SHOW_HOUR;
在这里,我们使用EXTRACT()函数编写了一个SELECT查询,以获取给定时间的小时。SHOW_HOUR是一个别名,用于存储小时值。
执行上述查询后,我们得到以下输出:
SHOW_HOUR
---
19
’19’是给定时间的小时值。因此,它作为输出显示。
示例5:
编写查询以显示给定时间中的分钟,即19:10:43。
查询:
mysql> SELECT EXTRACT (MINUTE FROM "19:10:43") AS SHOW_MINUTE;
在这里,我们使用EXTRACT()函数编写了一个SELECT查询,以从给定的时间中获取分钟值。SHOW_MINUTE是一个别名,用于存储分钟值。
执行上述查询后,我们得到了以下输出:
SHOW_MINUTE
---
10
’10’是给定时间中的分钟值。因此,它作为输出显示。
示例6:
编写查询以显示给定时间(即19:10:43)中的秒。
查询:
mysql> SELECT EXTRACT (SECOND FROM "19:10:43") AS SHOW_SECOND;
在这里,我们使用EXTRACT()函数编写了一个SELECT查询,以获取给定时间的秒值。SHOW_SECOND是一个别名,用于存储一个秒钟的值。
执行上述查询后,我们得到以下输出:
SHOW_SECOND
---
43
43是给定时间的第二个值。因此,它作为输出显示。
6. DATE_ADD()
使用SQL中的DATE_ADD()函数,我们可以将特定的时间间隔添加到给定的日期上。
语法:
SELECT DATE_ADD (DATE, INTERVAL VALUE Unit_to_be_added);
示例1:
编写一个查询,将给定日期(即2021年10月24日)加上15天。
查询:
mysql> SELECT DATE_ADD ("2021-10-24", INTERVAL 15 DAY) AS NEW_DATE;
这里,我们使用DATE_ADD()函数编写了一个SELECT查询,以向给定日期添加一个15天的间隔。NEW_DATE是一个别名,用于存储新日期的值。
您将获得以下输出:
NEW_DATE
---
2021-11-08
将2021-10-24增加15天的间隔后,新的日期是2021-11-08。
示例2:
编写一个查询以在给定日期2021年10月24日上添加5个月的间隔。
查询:
mysql> SELECT DATE_ADD ("2021-10-24", INTERVAL 5 MONTH) AS NEW_DATE;
在这里,我们编写了一个带有DATE_ADD()函数的SELECT查询,以在给定日期上添加5个月的间隔。NEW_DATE是一个别名,用于存储新日期的值。
你将得到以下输出:
NEW_DATE
---
2022-03-24
在2021-10-24上添加5个月的间隔后,新日期为2022-03-24。
示例3:
编写一个查询,将给定日期增加25年,即2021年10月24日。
查询:
mysql> SELECT DATE_ADD ("2021-10-24", INTERVAL 25 YEAR) AS NEW_DATE;
这里,我们使用DATE_ADD()函数编写了一个SELECT查询,以在给定的日期上添加一个25年的间隔。NEW_DATE是一个别名,用于存储新日期的值。
您将获得以下输出:
NEW_DATE
---
2046-10-24
在2021-10-24的基础上增加25年后,新日期为2046-10-24。
7. DATE_SUB()
使用SQL中的DATE_SUB()函数,我们可以从给定日期中减去指定的时间间隔。
语法:
SELECT DATE_SUB (DATE, INTERVAL VALUE Unit_to_be_subtracted);
示例1:
编写一个查询来从给定日期中删除25年的时间间隔,即2021年10月24日。
查询:
mysql> SELECT DATE_SUB("2021-10-24", INTERVAL 25 YEAR) AS NEW_DATE;
在这里,我们使用DATE_SUB()函数编写了一个SELECT查询,从给定日期中减去25年的时间间隔。NEW_DATE是一个别名,用于存储新日期的值。
你将得到以下输出结果:
NEW_DATE
---
1996-10-24
从2021-10-24去掉25年的间隔后,得到的新日期是1996-10-24。
示例2:
编写一个查询语句,从给定日期(即2021年10月24日)中去掉一个5个月的间隔。
查询语句:
mysql> SELECT DATE_SUB("2021-10-24", INTERVAL 5 MONTH) AS NEW_DATE;
这里,我们使用DATE_SUB()函数编写了一个SELECT查询,用于从给定日期中删除5个月的间隔。NEW_DATE是一个别名,用于存储新日期的值。
您将获得以下输出:
NEW_DATE
---
2021-05-24
将2021-10-24日期减去5个月后得到的新日期为2021-05-24。
示例3:
编写一个查询,从给定的日期2021年10月24日减去15天。
查询:
mysql> SELECT DATE_SUB("2021-10-24", INTERVAL 15 DAY) AS NEW_DATE;
在这里,我们使用DATE_SUB()函数编写了一个SELECT查询,以从给定的日期中减去15天的间隔。NEW_DATE是一个别名,用于存储新日期的值。
您将获得以下输出:
NEW_DATE
---
2021-10-09
从2021-10-24中去除15天间隔后,新日期为2021-10-09。
8. DATEDIFF()
在SQL中使用DATEDIFF()函数可以得到两个给定日期之间的天数。
语法:
SELECT DATEDIFF(Date1, Date2);
示例1:
编写一个查询来计算两个给定日期之间的差异,即2021年10月24日和2021年10月9日。
查询:
mysql> SELECT DATEDIFF("2021-10-24", "2021-10-09") AS NEW_DATE;
在这里,我们使用DATE_DIFF()函数编写了一个SELECT查询,以获取日期2021-10-24和2021-10-09之间的差异。Number_of_Days是一个别名,用于存储以天数为单位的差异。
您将获得以下输出:
Number_of_Days
---
15
2021-10-24和2021-10-09之间相差15天。
例2:
编写一个查询来计算两个给定日期之间的差异,即2018年5月5日和2008年5月5日。
查询:
mysql> SELECT DATEDIFF ("2018-05-05", "2008-05-05") AS NEW_DATE;
在这里,我们使用DATE_DIFF()函数编写了一个SELECT查询,以获取日期2018-05-05和2008-05-05之间的差异。Number_of_Days是一个别名,用于以天数的形式存储差异。
您将获得以下输出:
Number_of_Days
---
3652
在日期2018-05-05和2008-05-05之间相差3652天。
9. DATE_FORMAT()
使用SQL中的DATE_FORMAT()函数,我们可以以格式化的方式显示与日期或时间相关的信息。
在表的列上使用DATE_FORMAT函数的语法:
SELECT DATE_FORMAT (ColumnName, Expression) FROM Table Name;
或者
格式化特定日期的语法:
SELECT DATE_FORMAT (Date, Expression);
示例1:
编写一个查询以以格式良好的方式显示给定的日期,即2021年10月24日th。
查询:
mysql> SELECT DATE_FORMAT ("2021-10-24", "%W %D %M %Y") AS Formatted_Date;
在这里,我们使用DATE_FORMAT()函数编写了一个SELECT查询,以获取格式化形式的日期2021-10-24。 Formatted_Date是一个用于存储格式化日期的别名。
你将会得到以下输出:
Formatted_Date
---
Sunday 24th October 2021
Sunday 24th October 2021 是格式化日期,格式为2021-10-24。
示例2:
编写一个查询以以格式化方式显示给定的日期和时间,即2021年10月24日 22:30:17。
查询:
mysql> SELECT DATE_FORMAT ("2021-10-24 22:30:17", "%W %D %M %Y %r") AS Formatted_DateTime;
这里,我们使用DATE_FORMAT()函数编写了一个SELECT查询,以得到格式化形式的日期和时间’2021-10-24 22:30:17’。Formatted_DateTime是一个用于存储格式化日期和时间的别名。
您将获得以下输出:
Formatted_DateTime |
---|
Sunday 24th October 2021 10:30:17 PM |
Sunday 24th October 2021 10:30:17 PM 是 2021-10-24 22:30:17 的格式化日期和时间。
例子 3:
编写一个查询来以良好格式显示学生列中的所有详细信息,并带有 DateTime_Birth 列。
查询:
mysql> SELECT ID, Name, DATE_FORMAT (DateTime_Birth, "%W %D %M %Y %r") AS Formatted_DateTime, City FROM student;
在这里,我们使用DATE_FORMAT()函数编写了一个SELECT查询,以获取所有记录的日期和时间的格式化形式。Formatted_DateTime是一个用于存储格式化日期和时间的别名。
你将得到以下输出:
ID | Name | Formatted_DateTime | City |
---|---|---|---|
1 | Mansi Shah | Friday 1st January 2010 06:39:09 PM | Pune |
2 | Tejal Wagh | Thursday 4th March 2010 05:13:19 AM | Nasik |
3 | Sejal Kumari | Saturday 1st May 2010 10:31:07 AM | Mumbai |
4 | Sonal Jain | Thursday 9th September 2010 05:17:07 PM | Shimla |
5 | Surili Maheshwari | Saturday 10th July 2010 08:45:18 PM | Surat |
这只显示了学生表中的所有记录,除了DateTime_Birth列。 格式化的日期和时间根据要求在Formatted_DateTime列中显示。