Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Странности при SELECT


Автор: rcdimon 7.11.2008, 22:15
Есть таблица такого вида

id    date    period    temperature    pressure    wind_velocity    wind_direction    description    picture
49    2008-11-07    1    -1..0    760    3        переменная облачность    n6
50    2008-11-08    1    -2..-2    761    4        переменная облачность    n6
51    2008-11-09    1    -2..-2    763    3        переменная облачность    n6
52    2008-11-07    2    -1..+1    761    3        переменная облачность    6
53    2008-11-08    2    -2..+1    761    5        ясно    7
54    2008-11-09    2    -2..+3    763    4        переменная облачность    6
55    2008-11-07    3    -1..+1    762    4        ясно    7

Ввожу запрос
Код

SELECT * 
FROM `mob_weather` 
WHERE `period` =3


Показывает все записи о погоде во все дни днем. 

Ввожу запрос
Код

SELECT *  FROM `mob_weather` WHERE `date` = NOW()


Показывает погоду за сегодня за все периоды времени.

Ввожу 
Код

SELECT *  FROM `mob_weather` WHERE `date` = NOW() AND `period` = 3


Не показывает ничего. Причем совершенно точно такие данные в таблице есть.  Если ввести
Код

SELECT *  FROM `mob_weather` WHERE `date` = '2008-11-07' AND `period` = 3


То выдает нормальный ответ. А почему с NOW() не работает? Тип поля date- date.

Автор: skyboy 7.11.2008, 22:22
NOW() возвращает значение типа DATETIME. с часами, минутами, секундами.
тип date приводится к типу datetime с учетом значения времени "00:00:00"
как по-твоему, "2008-11-07 00:00:00" равно "2008-11-07 21:22:34"?

Автор: rcdimon 8.11.2008, 14:10
Не равно, но почему тогда успешно работает 

Код

SELECT *  FROM `mob_weather` WHERE `date` = NOW()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)