繁体   English   中英

MySQL concat 年月日期列到同一表中的日期列

[英]MySQL concat year month date colums to date column in same table

我在 mysql 中有一个表 'setlists',其中列 'year' 'month' 'day' 为 int 类型,我想将其与 str_to_date 合并到同一个表中的新列 'date' 中。 这是我到目前为止所拥有的,但我似乎无法正确使用语法。 它不会运行。 我已经创建了新的日期列并将其设置为日期类型。

UPDATE setlists
SET date = str_to_date(concat(year,'-',month,'-',day), '%Y-%m-%d') FROM setlists

数据:

我试图将年月日列连接到同一个表的日期列中。

date  year  month  day
null  2018  01     01
null  2017  01     01

当前错误输出如下:

错误代码:1064。您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册,以获取在第 2 行的“FROM setlists”附近使用的正确语法

只需在更新查询结束时删除FROM setlists 它不属于那里。

UPDATE setlists
SET date = str_to_date(concat(year,'-',month,'-',day), '%Y-%m-%d');

SQL 更新语法是这样的,目标表被指定为UPDATE任何内容。

对于更新查询,您不应使用FROM [table] ,除非您对输入使用SELECT查询,否则您已经定义了要使用UPDATE setlists更新的表。

从您的查询中删除FROM setlists以使其工作。

请参阅此处UPDATE 查询语法文档

所以:

UPDATE setlists
SET date = STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%Y-%m-%d');

请参阅: SQL 小提琴

查看年、月、日函数的使用情况

   UPDATE setlists
    SET date = str_to_date(concat(year(sysdate()),'-',month(sysdate()),'-',day(sysdate())), '%Y-%m-%d');

如果这些是列,那么

UPDATE setlists
SET date = str_to_date(concat(year,'-',month,'-',day), '%Y-%m-%d');

有一个更简洁的方法:

DATE(CONCAT_WS('-', year, month, day))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM