在现有列中将日期设置为年份

时间:2019-02-08 01:54:13

标签: mysql

您好,我正在尝试更新现有列并将Year列从1/1/2019设置为2019。我收到语法错误,不确定如何执行此操作。谢谢

UPDATE TABLE set year = YEAR(date_format(STR_TO_DATE(year,'%d/%m/%Y'))) 
WHERE id > 0;

3 个答案:

答案 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;