如何将欧洲格式的字符串日期转换为有效的 mysql 日期格式?

Posted

技术标签:

【中文标题】如何将欧洲格式的字符串日期转换为有效的 mysql 日期格式?【英文标题】:How to convert a string date in european format to a valid mysql date format? 【发布时间】:2020-05-24 09:05:44 【问题描述】:

我正在尝试通过我的数据库中的表格插入 2 个日期,表格中的日期格式是这样的字符串 01/01/2020 并且数据库中的字段是 DATE 所以我知道它需要 YYYY/MM/ DD对吗?

我试过这个查询:

INSERT INTO property_tenant (id_user, id_property, check_in, check_out) 
VALUES(1375965, 119, STR_TO_DATE("01/01/2020", '%d/%m/%y'), 
                     STR_TO_DATE("01/01/2021", '%d/%m/%y'));

我也试过这个:

DATE_FORMAT(STR_TO_DATE("01/01/2021", '%d/%m/%y'), '%Y-%m-%d')

但我不断收到此错误:

代码:'ER_TRUNCATED_WRONG_VALUE',错误号:1292,sqlMessage: "截断不正确的日期值:'01/01/2020'"

【问题讨论】:

数据库的日期应该存储为 YYYYMMDD(DATEDATETIME 等)日期格式,既不是美国也不是欧洲样式但“数据库样式”!! 【参考方案1】:

你可以直接使用STR_TO_DATE()函数作为

STR_TO_DATE('1,1,2021','%d,%m,%Y')

这已经产生了日期结果。实际上,日期列在表格中没有格式。 fmt 部分('%d,%m,%Y')只需要表达符合正确排序的时间部分(day,month,Year)的文字片段。

Demo

【讨论】:

如果表格中输入的日期以 / 分隔,我不应该这样设置吗? STR_TO_DATE('1/1/2021','%d/%m/%Y') 不知道为什么它不起作用我已经更新了上面的查询,但我得到了这个输出:``` INSERT INTO property_tenant (id_user, id_property, check_in, check_out) VALUES (1375965, 119 , STR_TO_DATE("01/01/2020", '%d/%m/%y'), STR_TO_DATE("01/01/2021", '%d/%m/%y')) 错误代码: 1292。截断不正确的日期值:'01/01/2020' 0.000 秒 ``` 看看this 大写Y @jesusfernandez 我一定很笨,但它看起来与我正在做的完全一样...我已经尝试过 dd/mm/yyyy 格式也是 D/M/Y 以及我所做的所有不同组合看不出哪里错了…… OMG 我想如果我设置 Y 所有其他文件,如日和月也应该是大写,现在可以排序了!!!非常感谢

以上是关于如何将欧洲格式的字符串日期转换为有效的 mysql 日期格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .Net / C# 中将日期转换为 HTTP 格式的日期

在PHP中转换日期格式[重复]

sql如何将字符串转为日期

MySQL将日期字符串转换为Unix时间戳

如何将 JavaScript 日期转换为 MySQL 日期时间格式? [复制]

将字符串转换为日期时间