SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.02.2012 11:39:46

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

Объясните по датам

Всем привет!
Появился такой вот вопрос, как будет работать запрос с условием

(DATE_FORMAT(`timestamp`, '%Y-%m-%d') = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -2 MONTH), '%Y-%m-%d')
если `timestamp` = 30 декабря. Т.е. крон рассылает письма каждые 2 месяца. Что будет происходить когда даты 30 февраля просто не существует? Будет ли происходить отправка писем за 30 и 31 число 1 марта?

Отредактированно tazododu (02.02.2012 11:41:00)

Неактивен

 

#2 02.02.2012 13:49:53

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Объясните по датам

mysql> select DATE_FORMAT(DATE_ADD('2011-12-30', INTERVAL +2 MONTH), '%Y-%m-%d')
;
+--------------------------------------------------------------------+
| DATE_FORMAT(DATE_ADD('2011-12-30', INTERVAL +2 MONTH), '%Y-%m-%d') |
+--------------------------------------------------------------------+
| 2012-02-29                                                         |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)


Отправит письма 29го февраля.

Неактивен

 

#3 02.02.2012 15:02:17

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

Re: Объясните по датам

vasya написал:

mysql> select DATE_FORMAT(DATE_ADD('2011-12-30', INTERVAL +2 MONTH), '%Y-%m-%d')
;
+--------------------------------------------------------------------+
| DATE_FORMAT(DATE_ADD('2011-12-30', INTERVAL +2 MONTH), '%Y-%m-%d') |
+--------------------------------------------------------------------+
| 2012-02-29                                                         |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)


Отправит письма 29го февраля.

Как лихо вы проверили smile
Получается, что для всех операций подобного рода лучше вместо месячного интервала использовать интервал в днях, например 30 дней?

Неактивен

 

#4 02.02.2012 20:39:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Объясните по датам

Зависит от того какое поведение вы хотите получить.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson