Почему SELECT date( «2014-01-01» ) — date( «2013-12-31» ) выдает 8870?

Почему запрос в mysql SELECT date( "2014-01-01" ) - date( "2013-12-31" ) выдает 8870 ?

Версия MySQL 5.1.66.
ОС: FreeBSD 8.2-RELEASE
Дата на сервере выставлена корректно.
  • Вопрос задан
  • 2985 просмотров
Пригласить эксперта
Ответы на вопрос 3
akashtrih
@akashtrih
А что ты хотел сделать вызовом функции DATE() для дат, у которых уже нет времени? Фактически, у тебя разность строк "2014-01-01" и "2013-12-31", которые преобразуются в числа 20140101 и 20131231, разность которых и равна 8870.
Для получения кол-ва дней между двумя датами, можно воспользоваться функцией DATEDIFF():
SELECT DATEDIFF('2014-01-01','2013-12-31');
Ответ написан
Комментировать
@DrDiza Автор вопроса
нет, мне надо было выбрать записи, старше 60 дней.
сделал вот так:
SELECT TO_DAYS(now()) - TO_DAYS(timefrom)) > 60;
т.е. функция to_days оперирует с датами, а функция date оперирует с числительными.
большое спасибо.
Ответ написан
@DrDiza Автор вопроса
не знаю почему, но по времени отработки вариант:
(TO_DAYS( now( ) ) - TO_DAYS( timefrom )) < 60
и вариант:
DATE_SUB( CURDATE( ) , INTERVAL 60 DAY ) < timefrom

совершенно одинаковы, хотя первый варинт производит гораздо больше вычислений.
при этом в таблице ~1,089,909 строк
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы