Тянуть не буду, сразу в бой:
Опаньки. Нужно отформатировать даты:
Это уже похоже на правду. Заюзаем DATE_FORMAT т.к. даты приходят от клиента:
WTF? Как из даты в феврале получилось дней больше, чем из даты в марте? И вобще, что за удивительная разница в 9861 день между 1-м и 28-м февраля? Как он это делает?
Интуиция подсказывает проверить DATE_FORMAT:
А потому что
SELECT TO_DAYS('05.03.2012') as `05.03.2012`,TO_DAYS('01.02.2012') as `01.02.2012`, TO_DAYS('28.02.2012') as `28.02.2012`
Результат:Опаньки. Нужно отформатировать даты:
SELECT TO_DAYS('2012-03-05') as `05.03.2012`,TO_DAYS('2012-02-01') as `01.02.2012`, TO_DAYS('2012-02-28') as `28.02.2012`
Результат:Это уже похоже на правду. Заюзаем DATE_FORMAT т.к. даты приходят от клиента:
SELECT TO_DAYS(DATE_FORMAT('05.03.2012', '%Y-%m-%d')) as `05.03.2012`,
TO_DAYS(DATE_FORMAT('01.02.2012', '%Y-%m-%d')) as `01.02.2012`,
TO_DAYS(DATE_FORMAT('28.02.2012', '%Y-%m-%d')) as `28.02.2012`
Результат:WTF? Как из даты в феврале получилось дней больше, чем из даты в марте? И вобще, что за удивительная разница в 9861 день между 1-м и 28-м февраля? Как он это делает?
Интуиция подсказывает проверить DATE_FORMAT:
SELECT DATE_FORMAT('05.03.2012', '%Y-%m-%d') as `05.03.2012`,
DATE_FORMAT('01.02.2012', '%Y-%m-%d') as `01.02.2012`,
DATE_FORMAT('28.02.2012', '%Y-%m-%d') as `28.02.2012`
Результат: А потому что
Although MySQL tries to interpret values in several formats, date parts must always be given in year-month-day order (for example,и даты форматировать надо на клиенте, не за чем лишний раз мускул качать!'98-09-04'
), rather than in the month-day-year or day-month-year orders commonly used elsewhere (for example,'09-04-98'
,'04-09-98'
). [мануал]
0 коммент.:
Отправить комментарий