MySQL date_add (), как использовать месяц в этом? - PullRequest
0 голосов
/ 10 ноября 2009

Привет всем, у меня есть этот SQL

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

я не могу заставить его работать, что я тут делаю неправильно?

танки за помощь.

Ответы [ 3 ]

1 голос
/ 10 ноября 2009

Это объединение даты, которая не работает. Он преобразует строки в числа, поэтому вы получаете 2009 + 11 + -1 = 2019, который затем не удается преобразовать в дату.

Вместо того, чтобы объединять дату из строк, вы можете использовать функцию last_day, чтобы получить последний день текущего месяца, добавить один день, чтобы перейти к следующему дню следующего месяца, а затем вычесть два месяца, чтобы получить первый. день предыдущего месяца:

select last_day(now()) + interval 1 day - interval 2 month;
1 голос
/ 10 ноября 2009
SELECT CONCAT_WS('-', '2009', MONTH(NOW()), '01') - INTERVAL 1 MONTH
0 голосов
/ 10 ноября 2009

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 году)

...