我有一个表将date
和hour
数据保存为字符串。我添加了两个字段date2
和hour2
,以便转换并保存当前字符串而不是varchar。日期格式为 dd.mm.YYYY
。我想将该字符串转换为日期格式,并将其保存在每行的相应列中。
我看过"how to convert a string to date in mysql?"试图查询以下声明:
UPDATE `rawdata` SET `date2` = STR_TO_DATE(`date`, '%Y-%m-%d')
但我仍在NULL
列中看到date2
个值。什么都没有更新。
答案 0 :(得分:4)
STR_TO_DATE()
函数的第二个参数指定您将其作为字符串提供的日期格式,在您的情况下,该字符串与数据库中当前的格式不匹配。尝试使用:
UPDATE `rawdata` SET `date2` = STR_TO_DATE(`date`, '%d.%m.%Y')
答案 1 :(得分:0)
UPDATE `rawdata` SET `date2` = STR_TO_DATE(`date`, '%Y-%m-%d')
应该符合manual:
UPDATE `rawdata` SET `date2` = STR_TO_DATE(`date`, '%d.%m.%Y')
第二个参数format
对应于当前格式化字符串的方式,而不是MySQL日期的格式。
或者,我会使用以下内容将date2
和hour2
合并到日期时间字段中:
UPDATE `rawdata` SET `datetime2` = STR_TO_DATE(CONCAT(`date`,'.',`hour`), '%d.%m.%Y.%H:%i')
这当然是在使用日期时间数据类型创建datetime2
字段后。