mysql 日期时间函数二

7、DAY(d)返回日期值 d 的日期部分

在MySQL中,DAY() 是一个日期函数,用于从给定的日期或日期时间值中提取日(天)的部分。

假设你有一个日期或日期时间值 d,那么 DAY(d) 将返回这个日期或日期时间值中的日部分。

例如:

  1. 如果 d'2023-09-17',那么 DAY(d) 将返回 17
  2. 如果 d'2023-09-17 14:30:00',那么 DAY(d) 仍然会返回 17,因为该函数只关心日期部分。

使用此函数时,确保你传递给它的值是一个有效的日期或日期时间值,否则你可能会得到一个错误或不可预测的结果。

以下是一个简单的SQL查询示例,展示如何使用 DAY() 函数:

SELECT DAY('2023-09-17') AS day_of_month;

这将返回:

day_of_month
------------
17

返回值是int类型

8、DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数

在 MySQL 中,DATEDIFF() 是一个日期函数,用于计算两个日期之间的天数差异。这个函数返回第一个日期参数(d1)和第二个日期参数(d2)之间的天数差。如果 d1d2 早,那么返回的值将是负数;如果 d1d2 晚,那么返回的值将是正数;如果两个日期相同,那么返回的值将是 0。

DATEDIFF() 的语法如下:

DATEDIFF(d1, d2)

其中:

d1 是第一个日期。

d2 是第二个日期。

例如:

  1. 如果 d1'2023-09-17'd2'2023-09-10',那么 DATEDIFF(d1, d2) 将返回 7,因为 '2023-09-17''2023-09-10' 晚 7 天。
  2. 如果 d1'2023-09-10'd2'2023-09-17',那么 DATEDIFF(d1, d2) 将返回 -7,因为 '2023-09-10''2023-09-17' 早 7 天。
  3. 如果 d1d2 都是 '2023-09-17',那么 DATEDIFF(d1, d2) 将返回 0,因为两个日期相同。

下面是一个简单的 SQL 查询示例,展示如何使用 DATEDIFF() 函数:

SELECT DATEDIFF('2023-09-17', '2023-09-10') AS days_difference;

这将返回:

days_difference
---------------
7

📌

请注意,当你使用 DATEDIFF() 时,参数 d1d2 的顺序很重要,因为它们决定了返回的天数差的正负。返回值是bigint类型

9、DATE_FORMAT按表达式 f的要求显示日期 d

在 MySQL 中,DATE_FORMAT() 函数用于按照指定的格式显示日期/时间值。这个函数非常有用,因为它允许你将日期或时间值转换为字符串,并且可以自定义这个字符串的格式。

DATE_FORMAT() 函数的语法如下:

DATE_FORMAT(date, format)

其中:

date 是要格式化的日期或时间值。

format 是你希望日期或时间值以何种格式显示的字符串。

格式字符串可以包含各种占位符,以指定日期和时间的各个部分应该如何显示。例如:

%Y 表示四位数的年份(例如:2023)。

%m 表示月份(01 到 12)。

%d 表示一个月中的天数(01 到 31)。

%H 表示小时(00 到 23)。

%i 表示分钟(00 到 59)。

%s 表示秒(00 到 59)。

以及许多其他格式占位符。

以下是一些使用 DATE_FORMAT() 的示例:

  1. 将日期格式化为 "年-月-日" 的形式:

SELECT DATE_FORMAT('2023-09-17', '%Y-%m-%d') AS formatted_date;

这将返回:

formatted_date
--------------
2023-09-17

  1. 将日期时间格式化为 "年-月-日 时:分:秒" 的形式:

SELECT DATE_FORMAT('2023-09-17 14:30:00', '%Y-%m-%d %H:%i:%s') AS formatted_datetime;

这将返回:

formatted_datetime
--------------------
2023-09-17 14:30:00

  1. 只获取日期的年份部分:

SELECT DATE_FORMAT('2023-09-17', '%Y') AS year_only;

这将返回:

year_only
---------
2023

👋

你可以根据需要组合多个格式占位符,以创建你想要的任何日期/时间格式。记住,DATE_FORMAT() 返回的是一个字符串,而不是一个日期或时间值。如果你需要再次对这个结果进行日期或时间运算,你需要先将字符串转换回日期或时间值。