MySQL date_add()如何使用月份进入此?

时间:2009-11-10 13:49:18

标签: sql function mysql5

你好,我有这个SQL

SELECT DATE_ADD( '2009-'+ MONTH( NOW() ) +'-01' , INTERVAL -1 MONTH );

我无法让它发挥作用,我在这里做错了什么?

坦克寻求帮助。

3 个答案:

答案 0 :(得分:1)

SELECT CONCAT_WS('-', '2009', MONTH(NOW()), '01') - INTERVAL 1 MONTH

答案 1 :(得分:1)

这是不起作用的日期的串联。它将字符串转换为数字,因此您获得2009 + 11 + -1 = 2019,然后无法转换为日期。

您可以使用last_day函数获取当前月份的最后一天,添加一天以到达下个月的第二天,然后减去两个月来到达第一个月,而不是从字符串连接日期。上个月的一天:

select last_day(now()) + interval 1 day - interval 2 month;

答案 2 :(得分:-1)

Plus是算术运算符,你必须使用concat。

SELECT DATE_ADD( concat('2009-',MONTH(NOW()),'-01') , INTERVAL -1 MONTH )

或更好

select date(now()) -  interval day(NOW())-1 day - interval 1 month;

(这也适用于2010年)