DATE_FORMAT函数用于将日期转换为指定格式的字符串,其语法为DATE_FORMAT(date, format),支持多种格式符如%Y、%m、%d等,适用于MySQL中的日期展示与分组统计。

在SQL中,DATE_FORMAT函数主要用于将日期类型的字段按照指定的格式转换为字符串形式。这个函数在MySQL中广泛使用,可以灵活地展示年、月、日、时、分、秒等信息。
DATE_FORMAT函数基本语法
DATE_FORMAT(date, format) 是该函数的标准写法,其中:
- date:要格式化的日期值,可以是日期字段或表达式
- format:定义输出格式的字符串,由特定的格式符组成
常用格式符说明
格式化字符串中的符号决定了输出内容。常见格式符包括:
- %Y:四位数的年份(如2024)
- %y:两位数的年份(如24)
- %m:两位数的月份(01-12)
- %c:数字月份(1-12),不补零
- %d:两位数的日期(01-31)
- %e:数字日期(1-31),不补零
- %H:24小时制的小时(00-23)
- %h:12小时制的小时(01-12)
- %i:分钟(00-59)
- %s:秒(00-59)
- %M:英文月份名称(如January)
- %b:英文缩写月份(如Jan)
- %W:英文星期名称(如Monday)
- %a:英文缩写星期(如Mon)
实际应用示例
假设有一个订单表 orders,包含 order_date 字段(类型为 DATETIME),可以通过以下方式格式化输出:
- 显示年月日(YYYY-MM-DD):SELECT DATE_FORMAT(order_date, '%Y-%m-%d') FROM orders;
- 显示中文习惯日期:SELECT DATE_FORMAT(order_date, '%Y年%m月%d日') FROM orders;
- 提取时间部分:SELECT DATE_FORMAT(order_date, '%H:%i:%s') AS time_only FROM orders;
- 按“周几”显示:SELECT DATE_FORMAT(order_date, '%W, %M %d, %Y') FROM orders;
- 用于分组统计:SELECT DATE_FORMAT(order_date, '%Y-%m') AS month, COUNT(*) FROM orders GROUP BY month;
注意:DATE_FORMAT只适用于MySQL。其他数据库如 PostgreSQL、SQL Server 使用不同的函数(如 TO_CHAR、FORMAT 等)。如果使用的是非MySQL数据库,该函数可能无法识别。
基本上就这些,掌握常用格式符就能灵活处理大多数日期展示需求。










