SQL 日期函数

2024年8月29日 | 阅读 10 分钟

在本教程中,我们将学习 SQL 中一些重要的内置日期函数。

SQL 中的日期函数

  1. NOW()
  2. CURDATE()
  3. CURTIME()
  4. DATE()
  5. EXTRACT()
  6. DATE_ADD()
  7. DATE_SUB()
  8. DATEDIFF()
  9. DATE_FORMAT()

让我们通过示例详细地逐一了解每个日期函数。在编写查询的示例中,我们将使用 MySQL 数据库。

假设我们有一个包含以下数据的 student 表

ID名称DateTime_Birth城市
1Mansi Shah2010-01-01 18:39:09Pune
2Tejal Wagh2010-03-04 05:13:19Nasik
3Sejal Kumari2010-05-01 10:31:07孟买
4Sonal Jain2010-09-09 17:17:07西姆拉
5Surili Maheshwari2010-07-10 20:45:18Surat

我们将在一些示例中使用此表。

1. NOW()

SQL 中的 NOW() 函数将返回当前系统的日期和时间。

语法

示例

编写查询以显示当前系统的日期和时间。

查询

在这里,我们编写了一个带有 NOW() 函数的 SELECT 查询来获取系统的当前日期和时间。Current_Date_Time 是存储日期和时间的别名。

执行上述查询后,我们得到以下输出

Current_Date_Time
2021-10-24 18:28:44

查询在系统中执行的日期和时间是 2021 年 10 月 24 日和 18:28:44。因此,它作为输出显示。

2. CURDATE()

SQL 中的 CURDATE() 函数将返回当前系统的日期。

语法

示例

编写查询以显示当前系统的日期。

查询

在这里,我们编写了一个带有 CURDATE() 函数的 SELECT 查询来获取系统的当前日期。CurrentDate 是存储日期的别名。

执行上述查询后,我们得到以下输出

CurrentDate
2021-10-24

查询在系统中执行的日期是 2021 年 10 月 24 日。因此,它作为输出显示。

3. CURTIME()

SQL 中的 CURTIME() 函数将返回当前系统的时间。

语法

示例

编写查询以显示当前系统的时间。

查询

在这里,我们编写了一个带有 CURTIME() 函数的 SELECT 查询来获取系统的当前时间。CurrentTime 是存储时间的别名。

执行上述查询后,我们得到以下输出

CurrentTime
18:49:07

查询在系统中执行的时间是 18:49:07。因此,它作为输出显示。

4. DATE()

使用 SQL 中的 DATE() 函数,您可以专门从 DATETIME 数据类型列中提取日期。

语法

示例 1

编写查询以显示给定日期和时间(即 2021-10-24 18:28:44)的日期。

查询

在这里,我们编写了一个带有 DATE() 函数的 SELECT 查询,以仅从传递给 DATE() 函数的日期和时间参数中获取日期。SHOW_DATE 是存储日期的别名。

执行上述查询后,我们得到以下输出

SHOW_DATE
2021-10-24

从日期和时间参数(即 '2021-10-24 18:28:44')中,日期值为 2021-10-24。因此,它作为输出显示。

示例 2

编写查询以显示 student 表中的所有详细信息,并包含 student 表的 DateTime_Birth 列的日期。

查询

在这里,我们编写了一个 SELECT 查询来获取 ID 和 Name。Date_of_Birth 是 DateTime_Birth 的别名。我们使用了带有 DATE() 函数的 Date_of_Birth 来仅获取日期。

执行上述查询后,我们得到以下输出

ID名称Date_of_Birth城市
1Mansi Shah2010-01-01Pune
2Tejal Wagh2010-03-04Nasik
3Sejal Kumari2010-05-01孟买
4Sonal Jain2010-09-09西姆拉
5Surili Maheshwari2010-07-10Surat

除了 DateTime_Birth 列之外,student 表中的所有记录都按原样显示。Date_of_Birth 列仅按要求显示日期。

5. EXTRACT()

使用 SQL 中的 EXTRACT() 函数,我们可以根据需要提取日期和时间的特定部分:日、月、年、小时、分钟等。

语法

示例 1

编写查询以显示给定日期(即 2021 年 10 月 24 日)的年份。

查询

在这里,我们编写了一个带有 EXTRACT() 函数的 SELECT 查询,以从给定日期中获取年份。SHOW_YEAR 是存储年份的别名。

执行上述查询后,我们得到以下输出

SHOW_YEAR
2021

'2021' 是给定日期中的年份。因此,它作为输出显示。

示例 2

编写查询以显示给定日期(即 2021 年 10 月 24 日)的月份。

查询

在这里,我们编写了一个带有 EXTRACT() 函数的 SELECT 查询,以从给定日期中获取月份。SHOW_MONTH 是存储月份的别名。

执行上述查询后,我们得到以下输出

SHOW_MONTH
10

给定日期中的月份值为 10。因此,它作为输出显示。

示例 3

编写查询以显示给定日期(即 2021 年 10 月 24 日)的日期。

查询

在这里,我们编写了一个带有 EXTRACT() 函数的 SELECT 查询,以从给定日期中获取日期。SHOW_DAY 是存储日期的别名。

执行上述查询后,我们得到以下输出

SHOW_DAY
24

给定日期中的日期值为 24。因此,它作为输出显示。

示例 4

编写查询以显示给定时间(即 19:10:43)的小时。

查询

在这里,我们编写了一个带有 EXTRACT() 函数的 SELECT 查询,以从给定时间中获取小时值。SHOW_HOUR 是存储小时值的别名。

执行上述查询后,我们得到以下输出

SHOW_HOUR
19

给定时间中的小时值为 '19'。因此,它作为输出显示。

示例 5

编写查询以显示给定时间(即 19:10:43)的分钟。

查询

在这里,我们编写了一个带有 EXTRACT() 函数的 SELECT 查询,以从给定时间中获取分钟值。SHOW_MINUTE 是存储分钟的别名。

执行上述查询后,我们得到以下输出

SHOW_MINUTE
10

给定时间中的分钟值为 '10'。因此,它作为输出显示。

示例 6

编写查询以显示给定时间(即 19:10:43)的秒。

查询

在这里,我们编写了一个带有 EXTRACT() 函数的 SELECT 查询,以从给定时间中获取秒值。SHOW_SECOND 是存储秒值的别名。

执行上述查询后,我们得到以下输出

SHOW_SECOND
43

给定时间中的秒值为 43。因此,它作为输出显示。

6. DATE_ADD()

使用 SQL 中的 DATE_ADD() 函数,我们可以将特定的时间间隔添加到给定的日期。

语法

示例 1

编写查询以将 15 天的间隔添加到给定日期(即 2021 年 10 月 24 日)。

查询

在这里,我们编写了一个带有 DATE_ADD() 函数的 SELECT 查询,以将 15 天的间隔添加到给定的日期。NEW_DATE 是存储新日期的值的别名。

您将得到以下输出

NEW_DATE
2021-11-08

在 2021-10-24 之后添加 15 天的间隔,新日期是 2021-11-08。

示例 2

编写查询以将 5 个月的间隔添加到给定日期(即 2021 年 10 月 24 日)。

查询

在这里,我们编写了一个带有 DATE_ADD() 函数的 SELECT 查询,以将 5 个月的间隔添加到给定的日期。NEW_DATE 是存储新日期的值的别名。

您将得到以下输出

NEW_DATE
2022-03-24

在 2021-10-24 之后添加 5 个月的间隔,新日期是 2022-03-24。

示例 3

编写查询以将 25 年的间隔添加到给定日期(即 2021 年 10 月 24 日)。

查询

在这里,我们编写了一个带有 DATE_ADD() 函数的 SELECT 查询,以将 25 年的间隔添加到给定的日期。NEW_DATE 是存储新日期的值的别名。

您将得到以下输出

NEW_DATE
2046-10-24

在 2021-10-24 之后添加 25 年的间隔,新日期是 2046-10-24。

7. DATE_SUB()

使用 SQL 中的 DATE_SUB() 函数,我们可以从给定的日期中移除特定的时间间隔。

语法

示例 1

编写查询以从给定日期(即 2021 年 10 月 24 日)中移除 25 年的间隔。

查询

在这里,我们编写了一个带有 DATE_SUB() 函数的 SELECT 查询,以从给定的日期中移除 25 年的间隔。NEW_DATE 是存储新日期的值的别名。

您将得到以下输出

NEW_DATE
1996-10-24

从 2021-10-24 移除 25 年的间隔后,新日期是 1996-10-24。

示例 2

编写查询以从给定日期(即 2021 年 10 月 24 日)中移除 5 个月的间隔。

查询

在这里,我们编写了一个带有 DATE_SUB() 函数的 SELECT 查询,以从给定的日期中移除 5 个月的间隔。NEW_DATE 是存储新日期的值的别名。

您将得到以下输出

NEW_DATE
2021-05-24

从 2021-10-24 移除 5 个月的间隔后,新日期是 2021-05-24。

示例 3

编写查询以从给定日期(即 2021 年 10 月 24 日)中移除 15 天的间隔。

查询

在这里,我们编写了一个带有 DATE_SUB() 函数的 SELECT 查询,以从给定的日期中移除 15 天的间隔。NEW_DATE 是存储新日期的值的别名。

您将得到以下输出

NEW_DATE
2021-10-09

从 2021-10-24 移除 15 天的间隔后,新日期是 2021-10-09。

8. DATEDIFF()

使用 SQL 中的 DATEDIFF() 函数,我们可以得到两个给定日期之间相差的天数。

语法

示例 1

编写查询以计算两个给定日期(即 2021 年 10 月 24 日和 2021 年 10 月 9 日)之间的差异。

查询

在这里,我们编写了一个带有 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 日)之间的差异。

查询

在这里,我们编写了一个带有 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 函数的语法

格式化特定日期的语法

示例 1

编写查询以以格式良好的方式显示给定日期(即 2021 年 10 月 24 日)。

查询

在这里,我们编写了一个带有 DATE_FORMAT() 函数的 SELECT 查询,以获取日期 2021-10-24 的格式。Formatted_Date 是存储格式化日期的别名。

您将得到以下输出

Formatted_Date
2021 年 10 月 24 日星期日

2021 年 10 月 24 日星期日是 2021-10-24 的格式化日期。

示例 2

编写查询以以格式良好的方式显示给定日期和时间(即 2021 年 10 月 24 日 22:30:17)。

查询

在这里,我们编写了一个带有 DATE_FORMAT() 函数的 SELECT 查询,以获取日期和时间 '2021-10-24 22:30:17' 的格式。Formatted_DateTime 是存储格式化日期和时间的别名。

您将得到以下输出

Formatted_DateTime
2021 年 10 月 24 日星期日 晚上 10:30:17

2021 年 10 月 24 日星期日 晚上 10:30:17 是 2021-10-24 22:30:17 的格式化日期和时间。

示例 3

编写查询以显示 student 列中的所有详细信息,并以格式良好的方式显示 DateTime_Birth 列。

查询

在这里,我们编写了一个带有 DATE_FORMAT() 函数的 SELECT 查询,以获取所有记录的日期和时间并进行格式化。Formatted_DateTime 是存储格式化日期和时间的别名。

您将得到以下输出

ID名称Formatted_DateTime城市
1Mansi Shah2010 年 1 月 1 日星期五 晚上 06:39:09Pune
2Tejal Wagh2010 年 3 月 4 日星期四 上午 05:13:19Nasik
3Sejal Kumari2010 年 5 月 1 日星期六 上午 10:31:07孟买
4Sonal Jain2010 年 9 月 9 日星期四 下午 05:17:07西姆拉
5Surili Maheshwari2010 年 7 月 10 日星期六 晚上 08:45:18Surat

除了 DateTime_Birth 列之外,student 表中的所有记录都按原样显示。Formatted_DateTime 列仅按要求显示日期和时间。


下一个主题SQL 中的 DDL 命令