您好,我正在尝试更新现有列并将Year列从1/1/2019设置为2019。我收到语法错误,不确定如何执行此操作。谢谢
UPDATE TABLE set year = YEAR(date_format(STR_TO_DATE(year,'%d/%m/%Y')))
WHERE id > 0;
答案 0 :(得分:0)
我建议您不要单独存储年份,而是创建一个新的真实日期列,并使用STR_TO_DATE
用当前数据填充它:< / p>
ALTER TABLE yourTable ADD COLUMN new_date DATETIME;
UPDATE yourTable
SET new_date = STR_TO_DATE(year, '%d/%m/%Y');
然后,假设您不再需要前一个文本列year
,则可以将其删除:
ALTER TABLE yourTable DROP COLUMN year;
请注意,如果您想从new_date
获取年份,那么您可以轻松地做到这一点,例如
SELECT new_date, YEAR(new_date) AS year
FROM yourTable;
答案 1 :(得分:0)
这将为您工作尝试
UPDATE `Table` SET`Year`= STR_TO_DATE(year(CURDATE()),"%Y");
这将只设置年份而不是整个日期
----------------------注意--------------------- ----
如果您想完全删除月份和日期,请在mysql中将数据类型从日期更改为年份,如果您想了解有关Year数据类型的更多信息,请查看以下链接:https://dev.mysql.com/doc/refman/8.0/en/year.html
答案 2 :(得分:0)
好的,我发现它似乎比应该的要复杂得多。您需要将日期转换为unix_time以及选择年份所需的from_unixtime
UPDATE my_table
set year=YEAR(FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE(year, '%d/%m/%Y'))))
WHERE id > 0;