DATE_FORMAT函数是 MySQL 中用于将日期或日期时间值格式化为指定格式的函数。它可以将日期或日期时间值转换为各种常见的日期格式,方便在数据库查询和报表中展示。
DATE_FORMAT(date, format)
date:要格式化的日期或日期时间值。
format:指定的日期格式字符串,用于指定输出的日期格式。
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
mysql> SELECT DATE_FORMAT('2023-08-08', '%Y-%m-%d'); +---------------------------------------+ | DATE_FORMAT('2023-08-08', '%Y-%m-%d') | +---------------------------------------+ | 2023-08-08 | +---------------------------------------+ mysql> SELECT DATE_FORMAT('2023-08-08 12:30:00', '%Y-%m-%d %H:%i:%s'); +---------------------------------------------------------+ | DATE_FORMAT('2023-08-08 12:30:00', '%Y-%m-%d %H:%i:%s') | +---------------------------------------------------------+ | 2023-08-08 12:30:00 | +---------------------------------------------------------+
在上述示例中,使用 DATE_FORMAT函数将日期 `2023-08-08` 格式化为 `2023-08-08` 的常见日期格式,将日期时间 `2023-08-08 12:30:00` 格式化为 `2023-08-08 12:30:00` 的日期时间格式。
mysql> SELECT DATE_FORMAT('2023-08-08', '%d-%b-%Y'); +---------------------------------------+ | DATE_FORMAT('2023-08-08', '%d-%b-%Y') | +---------------------------------------+ | 08-Aug-2023 | +---------------------------------------+ mysql> SELECT DATE_FORMAT('2023-08-08 12:30:00', '%H:%i:%s %d-%b-%Y'); +---------------------------------------------------------+ | DATE_FORMAT('2023-08-08 12:30:00', '%H:%i:%s %d-%b-%Y') | +---------------------------------------------------------+ | 12:30:00 08-Aug-2023 | +---------------------------------------------------------+
在这些示例中,通过指定不同的日期格式字符串,将日期格式化为特定的格式。
1. DATE_FORMAT函数返回的结果是一个字符串,而不是日期或日期时间类型。
2. 日期格式字符串中的百分号 `%` 是格式说明符的前缀,后面跟有特定的字符表示不同的日期部分。例如,`%Y` 表示四位年份,`%m` 表示两位月份,`%d` 表示两位日期,`%H` 表示 24 小时制的小时数,`%i` 表示分钟数,`%s` 表示秒数等。你可以参考 MySQL 的文档获取更多的日期格式说明符。
3. 如果 `date` 参数不是一个有效的日期或日期时间值,`DATE_FORMAT` 函数将返回 `NULL`。
4. MySQL 对日期和时间的处理方式可能因版本而异。在使用 `DATE_FORMAT` 函数时,建议参考所使用的 MySQL 版本的文档,以确保获得正确的结果。
5. 在将日期格式化为字符串后,如果需要进一步进行日期比较或其他操作,可能需要将字符串转换回日期或日期时间类型。
6. 当格式化日期时间值时,如果只指定了日期格式说明符,将只输出日期部分;如果只指定了时间格式说明符,将只输出时间部分。要同时输出日期和时间部分,需要同时指定日期和时间格式说明符。
7. 在实际应用中,根据具体的需求选择合适的日期格式字符串,并确保格式字符串与输入的日期或日期时间值匹配,以避免出现错误或不期望的结果。
DATE_FORMAT函数是 MySQL 中非常实用的日期格式化函数,它提供了灵活的方式将日期和日期时间值转换为各种定制的格式。通过了解函数的语法和各种日期格式说明符,可以轻松地满足不同的日期格式化需求。在使用过程中,注意参数的有效性、格式字符串的正确性以及版本差异,以确保函数的正确运行和预期结果的获取。希望这篇文章对你在 MySQL 日期格式化方面有所帮助。