mysql:如何从另一列

时间:2017-05-25 18:07:53

标签: mysql sql

我需要一个检索类型为日期的列的查询,但基于此列,我还需要在查询中创建另一列,该列需要使用此提及列的年份和月份,并且日期使用1。

这就是我所拥有的:

SELECT 
    forecast_id,
    name,
    property_id,
    property_name,
    DATE(YEAR(last_day_of_month), MONTH(last_day_of_month), 1) AS forecast_month,
    last_day_of_month,
FROM table_name;

我收到了一个错误,我不知道如何才能获得此列,该列占用了我的表中存在的一列的相同年份和月份,并且只更改了一天。

我得到的错误是:

  

错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在'附近使用。 MONTH(last_day_of_month),1)AS forecast_month,last_day_of_month,COUN'在第6行0.00075秒

2 个答案:

答案 0 :(得分:1)

MySQL中的DATE没有三参数版本 - 因此错误。

你应该可以这样做:

SELECT STR_TO_DATE(
   CONCAT(YEAR(last_day_of_month),'-',MONTH(last_day_of_month),'-',1)
    , '%Y-%m-%d') as firstOfMonth 
 FROM table_name;

另一个应用程序是首先进入该月的最后一天(已经在last_day_o_month?),然后添加一天(下个月的第一天),然后返回一个月:

 SELECT  date_add(date_add(last_day_of_month, interval 1 DAY),interval -1 MONTH)

答案 1 :(得分:0)

最简单的方法可能是减去当月的某一天:

select last_day_of_month + interval (1 - day(last_day_of_month)) day

注意:如果可能有时间组件,则需要转换为date