如何将欧洲格式的字符串日期转换为有效的 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(DATE
、DATETIME
等)日期格式,既不是美国也不是欧洲样式但“数据库样式”!!
【参考方案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 格式的日期