Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему результат разный?
 
 автор: Roma   (17.12.2007 в 17:22)   письмо автору
 
 

Всем привет!!!
Столкнулся с такой проблемой

//Этот запрос работает правильно, ответ - 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 записи!!!
В чем может быть причина?
Заранее спасибо

   
 
 автор: Trianon   (17.12.2007 в 20:02)   письмо автору
 
   для: Roma   (17.12.2007 в 17:22)
 

причина в том, что даты сравниваются, как строки. То есть посимвольно.
А значит '10.1.2007' > '1.12.2008' > '1.11.2009' > '1.10.2010' > '1.1.2011' .и т.д.,
а вовсе не ... < ...< ... < ... < ... как Вы ошибочно полагаете.

В качестве формата представления дат в MySQL неспроста выбрана восточная запись гггг-мм-дд с выравненными по ширине полями месяца и дня .

   
 
 автор: Roma   (18.12.2007 в 11:05)   письмо автору
 
   для: Trianon   (17.12.2007 в 20:02)
 

Спасибо за ответ, все понятно!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования