我需要一个检索类型为日期的列的查询,但基于此列,我还需要在查询中创建另一列,该列需要使用此提及列的年份和月份,并且日期使用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秒
答案 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
。