DATE_FORMAT() 函数解读【MYSQL】

2024-05-04 20:12:11 浏览数 (1)

MySQL中的DATE_FORMAT()函数是一个非常有用的工具,它允许你按照指定的格式显示日期/时间值。这个函数非常灵活,可以处理各种日期和时间格式的需求。

用于将指定的日期格式化为给定的格式值,即将给出一个日期,该函数将该日期格式化为指定的格式参数。

DATE_FORMAT()函数的基本语法

DATE_FORMAT()函数的基本语法如下:

代码语言:sql复制
DATE_FORMAT(date, format)
  • date:是你要格式化的日期或时间值。
  • format:是你希望日期或时间值呈现的格式。

格式

描述

示例

%a

缩写的工作日名称

Sun, Mon, Tue, Wed, Thu, Fri, Sat

%b

缩写的月份名称

Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec

%c

数字表示的月份

1, 2, ..., 12

%D

月份中的某天,带有后缀

1st, 2nd, 3rd, 4th, ..., 31st

%e

月份中的某天,不带前导零

1, 2, ..., 31

%f

微秒部分

000000 到 999999

%H

小时(24小时制)

00, 01, ..., 23

%i

分钟

00, 01, ..., 59

%j

一年中的第几天

001, 002, ..., 366

%M

完整的月份名称

January, February, ..., December

%p

上午或下午标记

AM, PM

%S

00, 01, ..., 59

%U

周数(以周日为一周的第一天)

00, 01, ..., 53

%W

完整的工作日名称

Sunday, Monday, ..., Saturday

%Y

4位数的年份

2023

注意事项

  • DATE_FORMAT()函数对NULL值返回NULL。
  • 如果date参数不是一个有效的日期或时间值,函数将返回NULL。
  • 使用DATE_FORMAT()函数时,请确保你提供的格式字符串是有效的,否则可能会导致不可预测的结果。

示例

示例1:格式化日期为“年-月-日”的形式
代码语言:sql复制
SELECT DATE_FORMAT(event_date, '%Y-%m-%d') AS formatted_date FROM events;

这将返回每个事件的日期,格式为“年-月-日”。

示例2:格式化日期为“月/日/年”的形式
代码语言:sql复制
SELECT DATE_FORMAT(event_date, '%m/%d/%Y') AS formatted_date FROM events;

这将返回每个事件的日期,格式为“月/日/年”。

示例3:包含时间的格式化

如果event_date是一个包含时间的日期时间列,你可以这样格式化它:

代码语言:sql复制
SELECT DATE_FORMAT(event_date, '%Y-%m-%d %H:%i:%s') AS formatted_datetime FROM events;

这将返回每个事件的日期和时间,格式为“年-月-日 时:分:秒”。

示例4:包含时间的格式化条件选择

代码语言:sql复制
SELECT id, `fund_type`, `fund_name`, `fund_code`, `lockup_period`
		, `revenue_performance`, `tag`, `tag_black`, `time`, `rank`
		, update_time, create_time
	FROM stable_fund
	WHERE DATE_FORMAT(TIME, '%Y-%m-%d') = '2024-04-29'

WHERE DATE_FORMAT(TIME, '%Y-%m-%d') = '2024-04-29'这个条件使用了DATE_FORMAT函数来格式化time列的值,只提取日期部分(即年-月-日)。然后,它会比较这个格式化后的日期是否等于'2024-04-29'。

示例5:包含时间的格式化分组使用

代码语言:sql复制
SELECT id, tab, fund_name, fund_code, fund_deadline_time, fund_manger, fund_tags, fund_slogan, `time`, `rank`, update_time, create_time 
FROM new_fund 
WHERE (fund_code = 020872 AND `time` BETWEEN '2024-03-13' AND '2024-03-15') 
GROUP BY DATE_FORMAT(`time`, '%Y-%m-%d');

GROUP BY DATE_FORMAT(time, '%Y-%m-%d')查询的结果将按照time列的日期部分(即年-月-日)进行分组。这意味着,如果有多个记录具有相同的日期(但可能具有不同的时间),那么它们将被视为一个组,并且对于每个组,查询将只返回一行结果。

0 人点赞