MySQL ADDDATE, DATE_FORMAT and CONCAT_WS

4
我正在构建以下查询,但遇到了语法问题:
SELECT FORMAT(yrs_served * 365, 0) AS days_served,
ADDDATE(date_comm, INTERVAL days_served DAY(DATE_FORMAT(CONCAT_WS('-', yr_comm, mth_comm, day_comm), %Y-%m-%d) AS date_comm) AS left_office
FROM prime_minister JOIN ministry
;

可以看到,我首先尝试将三个值连接成日期,并使用DATE_FORMAT格式化为日期,以便我可以使用ADDDATE在此日期上添加一定数量的天数。

请指导我哪里出了问题,谢谢!

1个回答

2

在定义别名的同一级别上,您不能使用ALIAS

SELECT   FORMAT(yrs_served * 365, 0) AS days_served,
         ADDDATE(CONCAT_WS('-', yr_comm, mth_comm, day_comm), INTERVAL (yrs_served * 365) DAY) AS left_office
FROM     prime_minister JOIN ministry.....

如果你想使用它,只需将其包装在子查询中,例如

SELECT  days_served,
        ADDDATE(date_comm, INTERVAL days_served DAY) AS left_office
FROM
(
    SELECT  FORMAT(yrs_served * 365, 0) AS days_served,
            CONCAT_WS('-', yr_comm, mth_comm, day_comm) as date_comm
    FROM     prime_minister JOIN ministry.....
) s

太棒了,谢谢!我知道我已经接近成功了,但是由于我是SQL的新手,语法/结构一直困扰着我。干杯! - sparksau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接