【问题标题】:concatenate curdate() with time based on another table基于另一个表将 curdate() 与时间连接起来
【发布时间】:2015-03-09 06:17:50
【问题描述】:

我正在尝试存储当前日期的串联,和另一个表中的时间,基于该表中列的比较,我试过这段代码,但它给了我 mysql 语法错误。出了什么问题?

我的代码:

UPDATE daily_table
SET
task_datetime =  CASE
    when master_table.check_day = 'Today' then concat(curdate(),'   ',master_table.task_time)          
 when master_table.check_day = 'Tomorrow' then concat(   date_add(curdate(),interval 1 day) ,' ', master_table.task_time)
 CASE END

我正在使用 mysql 和 phpmyadmin。

【问题讨论】:

  • 删除 END 之前的大小写。
  • @Charvee Shah,它的工作,我得到这个,'字段列表'中的未知列'master_table.check_day'
  • 你能显示master_table的结构吗?
  • @ Stanislovas Kalašnikovas master_id(int),task_name(varchar 255), task_time(time),check_day(varchar 255) , check_day 列存储一个字符串“今天”或“明天”
  • 你没有加入 master_table 这就是它给出错误的原因。

标签: mysql sql datetime concatenation


【解决方案1】:

你应该JOINmaster_table和daily_table。

这应该对你有帮助:How can I do an UPDATE statement with JOIN in SQL?

应该是这样的:

UPDATE daily_table dt
INNER JOIN master_table mt ON
    mt.col = dt.col
SET dt.taskdate = 
CASE
    WHEN mt.check_day = 'Today' THEN CONCAT(CURDATE(),'   ',mt.task_time)          
    WHEN mt.check_day = 'Tomorrow' THEN CONCAT(   DATE_ADD(CURDATE(),INTERVAL 1 DAY) ,' ', mt.task_time)
END

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2021-01-11
    • 2020-11-30
    • 2019-04-17
    相关资源
    最近更新 更多