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

Mysql 在现有列中将日期设置为年,mysql,Mysql,您好,我正在尝试更新现有列,并将年份列从2019年1月1日设置为2019年。我得到一个语法错误,不知道如何做到这一点。多谢各位 UPDATE TABLE set year = YEAR(date_format(STR_TO_DATE(year,'%d/%m/%Y'))) WHERE id > 0; 我建议您不要单独存储年份,而是创建一个新的真实日期列,并使用STR\u TO\u date将当前数据填充到该列中: ALTER TABLE yourTable ADD COLUMN new_

您好,我正在尝试更新现有列,并将年份列从2019年1月1日设置为2019年。我得到一个语法错误,不知道如何做到这一点。多谢各位

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

我建议您不要单独存储年份,而是创建一个新的真实日期列,并使用
STR\u TO\u date
将当前数据填充到该列中:

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;
请注意,如果您想从
新的\u日期
获取年份,那么您可以很容易地这样做,例如:

SELECT new_date, YEAR(new_date) AS year
FROM yourTable;

这对你有用试试这个

UPDATE `Table` SET`Year`= STR_TO_DATE(year(CURDATE()),"%Y");
这将只确定一年,而不是整个日期

注意--------------------


如果您想完全删除mysql中的月份和日期,将列的数据类型从日期更改为年份如果您想了解更多关于年份的数据类型,请查看以下链接:

好的,我发现它似乎比实际情况复杂得多。您需要将日期转换为unix\u时间,并将from\u unixtime转换为您需要选择的年份

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

检查这个out@MuhammedAeraz这会将日期和月份转换为00,但我列中的一些年份早在2004年就已经存在了,所以我希望年份保持不变,我只想删除月份和日期。您可以在mysql的日期和时间部分将列的数据类型更改为年,然后尝试我以前回答的答案希望它能起作用