|
|
|
| Всем привет!!!
Столкнулся с такой проблемой
//Этот запрос работает правильно, ответ - 64 записи
SELECT count(*) FROM `my_table` WHERE
DATE_FORMAT(`CREATION_DATE`, '%Y.%c.%e' )>='2007.1.1')
AND DATE_FORMAT(uo.`CREATION_DATE`, '%Y.%c.%e')<='2008.1.1'
)
//Этот запрос возвращает 0
SELECT count(*) FROM `my_table` WHERE
DATE_FORMAT(`CREATION_DATE`, '%e.%c.%Y' )>='1.1.2007' AND DATE_FORMAT(`CREATION_DATE`, '%e.%c.%Y')<='1.1.2008'
//ХОТЯ...
//Если второй запрос разбить на два, то:
//Рез-т этого запроса - 64, как и в первом
SELECT count(*) FROM `my_table` WHERE
DATE_FORMAT(`CREATION_DATE`, '%e.%c.%Y' )>='1.1.2007'
//А этот ведет себя очень странно
// в таком виде возвращает 0
SELECT count(*) FROM `my_table` WHERE
DATE_FORMAT(`CREATION_DATE`, '%e.%c.%Y')<='1.1.2008'
|
И если в последнем запросе заменить год на 2010 - рез-т не меняется, а вот если заменить число на 31,и месяц на 12, то рез-т - 42 записи!!!
В чем может быть причина?
Заранее спасибо | |
|
|
|
|
|
|
|
для: Roma
(17.12.2007 в 17:22)
| | причина в том, что даты сравниваются, как строки. То есть посимвольно.
А значит '10.1.2007' > '1.12.2008' > '1.11.2009' > '1.10.2010' > '1.1.2011' .и т.д.,
а вовсе не ... < ...< ... < ... < ... как Вы ошибочно полагаете.
В качестве формата представления дат в MySQL неспроста выбрана восточная запись гггг-мм-дд с выравненными по ширине полями месяца и дня . | |
|
|
|
|
|
|
|
для: Trianon
(17.12.2007 в 20:02)
| | Спасибо за ответ, все понятно!!! | |
|
|
|