MySQL中的DATE_FORMAT()
函数是一个非常有用的工具,它允许你按照指定的格式显示日期/时间值。这个函数非常灵活,可以处理各种日期和时间格式的需求。
用于将指定的日期格式化为给定的格式值,即将给出一个日期,该函数将该日期格式化为指定的格式参数。
DATE_FORMAT()函数的基本语法
DATE_FORMAT()
函数的基本语法如下:
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
是一个包含时间的日期时间列,你可以这样格式化它:
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
列的日期部分(即年-月-日)进行分组。这意味着,如果有多个记录具有相同的日期(但可能具有不同的时间),那么它们将被视为一个组,并且对于每个组,查询将只返回一行结果。