powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как правильно СРАВНИВАТЬ ДАТЫ?
3 сообщений из 3, страница 1 из 1
Как правильно СРАВНИВАТЬ ДАТЫ?
    #32256459
slego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как правильно сравнить две даты.
У меня есть табличка с полем clicktime и я пытаюсь вытягивать оттуда значения следующим образом

SELECT * FROM tFirmsStatistics WHERE clicktime >= '01.09.2003' AND clicktime <= '04.09.2003'

и

SELECT * FROM tFirmsStatistics WHERE clicktime >= '01.01(!).2003' AND clicktime <= '04.09.2003'

Первый запрос работает правильно, второй - вообще ничего не возвращает. Где моя ошибка, А?

Спасибо за любой совет! :)
...
Рейтинг: 0 / 0
Как правильно СРАВНИВАТЬ ДАТЫ?
    #32256475
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой у вас тип поля? Дело в том, что для типов date time datetime timestamp и тд, необходим ANSI-шный формат даты и времени. То есть YYYY-MM-DD. Если вы вводите dd.mm.yyyy, то в результате получается фигня.

И в выборке условиях так же. Если вы задаете строку, где сервер не в состояниии правильно разобраться с форматом даты, он скорее всего попытается преобразовать строку в число и будет считать это число как количество дней не помню там откуда..
Вот смотрите:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
mysql> create table z (d datetime);
Query OK,  0  rows affected ( 0 . 20  sec)

mysql> insert into z values ('04.09.2003'); 
Query OK,  1  row affected ( 0 . 05  sec)

mysql> select * from z \G
***************************  1 . row ***************************
d:  0000 - 00 - 00   00 : 00 : 00 
 1  row in set ( 0 . 00  sec)


Видите? теперь так, как надо:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
mysql>  insert into z values ('2003-09-04');
Query OK,  1  row affected ( 0 . 00  sec)
mysql> select * from z \G

***************************  1 . row ***************************
d:  2003 - 09 - 04   00 : 00 : 00 
 1  row in set ( 0 . 00  sec)

mysql> select * from z where d > '2003-01-01'\G
***************************  1 . row ***************************
d:  2003 - 09 - 04   00 : 00 : 00 
 1  row in set ( 0 . 00  sec)


то есть нормально вводится и нормально сравнивается.
...
Рейтинг: 0 / 0
Как правильно СРАВНИВАТЬ ДАТЫ?
    #32256623
slego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!
В принципе, понятные вещи. Вот балбес! Как сам до этого не дошел!
Еще раз спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как правильно СРАВНИВАТЬ ДАТЫ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]