MySQL 8.0.30修改日期格式为DD/MM/YYYY报错,求解决方案及dmy用法
MySQL日期格式设置及
dmy用法说明 为什么SET DATEFORMAT dmy报错?
SET DATEFORMAT是SQL Server专属语法,MySQL并不支持该命令,因此执行时会触发1064语法错误。
MySQL中设置默认日期格式为DD/MM/YYYY的方法
根据生效范围不同,有三种设置方式:
1. 会话级临时生效(仅当前连接有效)
执行以下语句,当前Workbench连接中,日期类型转字符串时会自动使用DD/MM/YYYY格式:
SET session date_format = '%d/%m/%Y';
验证:执行SELECT CURDATE();,会返回类似31/12/2024的结果。
2. 全局级临时生效(对新连接有效,重启MySQL后失效)
需要管理员权限,执行后所有新打开的连接会应用该格式:
SET global date_format = '%d/%m/%Y';
注意:当前已打开的连接不会立即生效,需重新连接Workbench才能看到变化。
3. 永久生效(需修改配置文件)
找到Windows系统中MySQL的配置文件my.ini(可通过Workbench的Server > Options File打开),在[mysqld]节点下添加:
date_format = '%d/%m/%Y'
保存后重启MySQL服务,所有连接都会默认使用该日期格式。
补充:插入/查询时的格式转换
如果需要将字符串按DD/MM/YYYY格式转为日期类型,使用STR_TO_DATE函数:
INSERT INTO your_table (date_column) VALUES (STR_TO_DATE('31/12/2024', '%d/%m/%Y'));
如果需要将日期类型转为DD/MM/YYYY格式的字符串,使用DATE_FORMAT函数:
SELECT DATE_FORMAT(date_column, '%d/%m/%Y') FROM your_table;
dmy的正确用法
dmy是SQL Server中用于指定日-月-年顺序的格式参数,但MySQL中没有直接对应的关键字。不过可以通过以下方式实现类似效果:
- 在日期格式化时,使用
%d/%m/%Y格式符(对应日/月/年),这就是dmy顺序在MySQL中的实现方式。 - 如果需要影响日期相关函数的语言显示(比如月份名称),可以设置
lc_time_names,但这不会改变日期格式的顺序:SET lc_time_names = 'en_GB'; -- 英式英语会采用日-月-年的显示习惯,但不修改date_format默认值
内容的提问来源于stack exchange,提问作者Dương Đại Sơn
相关产品推荐
相关产品推荐

