「MySQL」日期时间格式化函数 DATE_FORMAT() 的使用详解

📅 发布时间:2026/7/8 9:56:29 👁️ 浏览次数:
「MySQL」日期时间格式化函数 DATE_FORMAT() 的使用详解
目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、DATE_FORMAT()语法DATE_FORMAT()是MySQL中用于格式化日期时间的函数语法DATE_FORMAT(date, format_string)date需要格式化的日期化时间值一般是需要被格式化的日期时间类型(datetime类)但也可以是日期时间形式的字符串format_string格式化字符串用于指定日期时间的格式化输出形式注1MySQL允许你对具体的日期时间格式的字符串进行格式化但其他数据库的格式化函数不一定支持比如Clickhouse的formatDateTime()注2MySQL对字符串进行格式化时日期时间的格式并不固定你可以用很多特殊字符隔开日期时间比如:/*-等但不能是空格MySQL会按照YY MM DD HH MM SS的顺序识别字符串中的数字– 比如下列SQl语句的执行结果相同都是 “2024,December,31st”SELECT DATE_FORMAT( ‘24-12-31’, ‘%Y,%M,%D’) AS format_dateSELECT DATE_FORMAT( ‘2024-12-31’, ‘%Y,%M,%D’) AS format_dateSELECT DATE_FORMAT( ‘2024/12/31’, ‘%Y,%M,%D’) AS format_dateSELECT DATE_FORMAT( ‘2024*12*31’, ‘%Y,%M,%D’) AS format_dateSELECT DATE_FORMAT( ‘241231’, ‘%Y,%M,%D’) AS format_date– 但如果使用空格间隔会执行失败但不会报错输出结果为NULLSELECT DATE_FORMAT( ‘24 12 31’, ‘%Y,%M,%D’) AS format_date二、格式化字符串详解格式含义%Y年份4位数字表示eg: 2024%y年份2位数字表示eg: 24%M月份英文全拼表示eg: June%m月份2位数字表示范围01-12eg: 06%D天数两位数字表示范围01-31eg: 15%d天数英文第几天表示范围 1st-31theg: 1st, 2nd, 3rd, 15th%H小时两位数字表示范围00-23eg: 23%i分钟两位数字表示范围00-59eg: 59%S OR %s秒钟两位数字表示范围00-59eg: 16%W星期英文全拼表示eg: Saturday%w星期1位数字表示eg: 6%T完全时间格式相当于 %H:%i%s 或 %H:%i:%S范围00:00:00-23:59:59eg: 15:30:36注3大小写形式%I 和%t无意义三、常见日期时间格式组合常见的日期时间格式化形式基本上就是如下几种%Y,%M,%D%Y-%m-%d %H:%i:%s%Y/%m/%d%W,%M,%DSQL语句SELECT ‘%Y-%m-%d %H:%i:%s’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%Y-%m-%d %H:%i:%s’) AS format_date UNION ALLSELECT ‘%Y,%M,%D’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%Y,%M,%D’) AS format_date UNION ALLSELECT ‘%W,%M,%D’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%W,%M,%D’) AS format_date UNION ALLSELECT ‘%y/%m/%d’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%y/%m/%d’) AS format_date UNION ALLSELECT ‘%H:%i:%s’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%H:%i:%s’) AS format_date UNION ALLSELECT ‘%H:%i:%S’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%H:%i:%S’) AS format_date UNION ALLSELECT ‘%T’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%T’) AS format_date UNION ALLSELECT ‘%w,%m-%d’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%w,%m-%d’) AS format_date UNION ALLSELECT ‘------’ AS format, ‘--------------’ AS format_date UNION ALLSELECT ‘%H:%I:%s’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%H:%I:%s’) AS format_date UNION ALLSELECT ‘%t’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%t’) AS format_date执行结果四、业务场景在实际的业务应用如报表导出、界面显示、数据分析等该函数通常用于输出特定格式的日期或时间当然DATE_FORMAT()允许你自定义输出格式只要你定义好格式化字符串即可。SELECT DATE_FORMAT(startTime,‘%Y-%m’) AS startTimeFROM tableAWHERE column1 ‘option1’五、总结DATE_FORMAT()是MySQL中用于格式化输出日期时间的函数我们可以通过使用该函数满足大多数格式化日期时间的应用场景本文的示例展示了如何获取当前日期和时间并将其格式化为一个常见的格式您可以根据需要调整格式字符串来满足您的具体需求。 但需要注意的是不同的数据库系统可能支持不同的格式字符串所以在使用时需要参考相应数据库的文档来确定正确的格式字符串。