Результат работы функции MySQL TO_DAYS() от неправильной даты = NULL:
mysql> SELECT TO_DAYS('0000-00-00');
NULL
и соответственно, пытаясь посчитать количество дней с указанной даты(или любое другое вычисление с датами) получим ошибку:
mysql> SELECT TO_DAYS(NOW()) - TO_DAYS('0000-00-00');
NULL
Как вариант можно использовать UNIX_TIMESTAMP:
mysql> SELECT (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP('0000-00-00'))/86400;
14284.81
хуйня
ОтветитьУдалитьне вижу никакого смысла в запросе. откуда вообще может взяться "неправильная" дата в запросе sql? и NULL - это не ошибка.
ОтветитьУдалитьваше решение выглядит так: если дата неправильная, то вычислять количество дней с января 1970 года. и какой в этом смысл? а если надо будет с 1965 года вычислить?
если так уж надо, можно использовать SELECT TO_DAYS(NOW()) - IFNULL(TO_DAYS('0000-00-00'), 0);
смысла столько же, только в любом случае число будет возвращать, и считать можно с нулевого года (с 1582 корректно).
в бомжеленту вообще бред ушел про високосный год, хорошо хоть поняли и потерли
что за хуйню вы тут пишете, где палево тем, где интересные статьи...хуета блядь одна, ролики засратые да кому они нужны, и ваще где тема про поддомен и склейку, неужели додумались удалить...
ОтветитьУдалитьты уебок анонимный хорош срать в моем посте, я первый тут начал срать. ПОСТ ХУЙНЯ. АФТАР ЕБЛАН.
ОтветитьУдалитьMeG, предположим, в таблицу заносится дата регистрации пользователя. По тем или иным причинам произошёл сбой, и записалась пустая переменная, т.е. значение ‘NULL’ или ‘0000-00-00’, в зависимости от того, как описана ячейка даты.
ОтветитьУдалитьПредположим, нам надо выбрать всех пользователей, зарегистрированных более 10-и суток, запрос вида:
select users from ... where to_days(now()) - to_days(data_registracii) > 10;
не выведет пользователя, при регистрации которого "сбойнула" дата.
Я хотел ограничиться подачей информации объёмом необходимым и достаточным, чтобы "кто в теме" - приняли к сведению. Понятное дело, если диапазон дат подразумевает даты до начала UNIX эры, надо делать по-другому.
Високосный год - это тем более не бред, потёр, т.к. знал, что сказав "А", надо будет пояснять детально, что было влом. К сожалению, большинство "программистов", не имеют понятия о таких фичах, например, в языке Perl, установленном на миллионах серверах мира, расстояние между датами не учитывает високосные года и неточность может ой как дорого стоить.
бля хуйня хуйней ебать
ОтветитьУдалитьСтатья говно
ОтветитьУдалитьДа и сайт тоже