【发布时间】:2014-01-31 21:38:17
【问题描述】:
UPDATE `smart_userstest`
SET lastlogin = STR_TO_DATE(lastlogin,'%d/%m/%y %h:%i')
WHERE lastlogin REGEXP('^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$')
有一个我以前用过的查询...除了现在我遇到错误。
所以我已经导入了访问我的数据库的 excel 电子表格。很多日期字段。大多数都是我正在尝试修复的新格式。 m/d/yyyy hour:min 其中月、日、小时和分钟可以是 1-2 个数字。我想简单地摆脱小时:分钟部分并将日期设置为正确的 MySql DATE。此外,我希望它能够说明 hour:min 部分留空,因为我两者都有。
示例错误: 1411 - 不正确的日期时间值:函数 str_to_date 的“1/24/2014”
【问题讨论】:
-
STR_TO_DATE(lastlogin,'%d/%m/%y')? -
@RocketHazmat - 然后我得到“ 1411 - 错误的日期时间值:'9/24/2013 14:32' for function str_to_date” - 这是我尝试的第一件事。
-
啊,我明白了。你两者都有,需要同时解析。
-
你为什么将上次登录存储为字符串而不是 DATETIME?
-
@kba - 我只是在它是导入的意义上存储它。问题的目的是我不想将其存储为字符串并希望将其设置为 DATE (时间无关紧要)。如果我将该字段设置为 DATE,那么如果格式不完全正确,“用户”文件将失败 - 所以他们可能会花费 20 年的时间来更新他们的东西。