linker
31.01.2014 - 10:45
zeleninРавен отрицательному значению, по-моему это же очевидно.
_____________
Gear FrameworkGear Framework на Github
zelenin
31.01.2014 - 10:48
Цитата (linker @ 31.01.2014 - 09:45) |
zelenin Равен отрицательному значению, по-моему это же очевидно. |
очевидно. И теперь мы снова возвращаемся к моему вопросу: в чем проблема хрангить unix timestamp ранее 1970 года?
И теперь снов возвращаемся к ответу. Да просто потому, что до 1970 года меток unix timestamp просто не существует. Что именно хранить?
Вопрос с родни: а в чем проблема написать биографию Джастина Бибера за 1857 год?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Valick
31.01.2014 - 11:44
zelenin, это проблема с мозгом у тех для кого это не проблема.
_____________
Стимулятор ~yoomoney - 41001303250491
linker
31.01.2014 - 11:57
zeleninВо-первых, мускул в поле типа TIMESTAMP не даст засунуть дату меньше чем 1970-01-01 00:00:00
_____________
Gear FrameworkGear Framework на Github
zelenin
31.01.2014 - 12:06
Цитата (twin @ 31.01.2014 - 10:33) |
И теперь снов возвращаемся к ответу. Да просто потому, что до 1970 года меток unix timestamp просто не существует. Что именно хранить?
Вопрос с родни: а в чем проблема написать биографию Джастина Бибера за 1857 год? |
выше ответили, что unix timestamp до 1970 отрицателен и существует. Так как он тогда может не существовать?
zelenin
31.01.2014 - 12:08
Цитата (Valick @ 31.01.2014 - 10:44) |
zelenin, это проблема с мозгом у тех для кого это не проблема. |
для меня это не проблема, но проблем с мозгом нету. Неверное утверждение.
zelenin
31.01.2014 - 12:09
Цитата (linker @ 31.01.2014 - 10:57) |
zelenin Во-первых, мускул в поле типа TIMESTAMP не даст засунуть дату меньше чем 1970-01-01 00:00:00 |
если речь идет о mysql timestamp, а не unix timestamp с типом integer.
phpшник
31.01.2014 - 12:15
Корректным диапазоном временных меток обычно являются даты с 13 декабря 1901 20:45:54 UTC по 19 января 2038 03:14:07 UTC. (Эти даты соответствуют минимальному и максимальному значению 32-битового знакового целого). Кроме того, не все платформы поддерживают отрицательные метки времени, поэтому поддерживаемый диапазон дат может быть ограничен Эпохой Unix. Это означает, что даты ранее 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах. Тем не менее, в версиях PHP 5.1 и старше это ограничено было снято.
В 64-битных версиях PHP корректный диапазон временных меток фактически бесконечен, так как 64 битов хватит для представления приблизительно 293 миллиарда лет в обоих направлениях.
killer8080
31.01.2014 - 12:22
Цитата (linker @ 31.01.2014 - 07:24) |
и оно работает честно, ибо присоединение -01-01 и -12-31 некорректно. |
возможно я не правильно понял условие задачи
Цитата (phpшник @ 30.01.2014 - 15:18) |
так проще вычислять возраст по требованию, то есть мне надо будет вывести людей возраста между 30 и 45, запрос к базе намного проще получается, чем всех извлекать, потом анализировать |
запрос с sub выведет тех у кого дата рождения входит в диапазон, т.е условие эквивалентно вида
... where `date` between '1969-01-31' and '1984-01-31'
соответственно даты с 1 по 30 января 69-го года в условие не попадают, хотя им 45 лет. Так же в условие не попадут те кто родился в 84-м после 31 января, хотя может это и не нужно?
linker
31.01.2014 - 12:37
killer8080Тут логика такая, нужно получить данные, которые попадают в возрастные ограничения от 30 до 45 лет ОТНОСИТЕЛЬНО ТЕКУЩЕЙ ДАТЫ, т.е. в твой набор попадут те, которые соответствуют '1969-01-31' and '1984-01-31', но которым на сегодняшний момент ещё не исполнилось 30 или уже исполнилось 46. Т.е. если сегодня 31.01.2014, то в набор должны попасть только те, кто родился между 31.01.1969 и 31.0.1.1984
P.S. может это я неправильно понял вопроса ТС?
_____________
Gear FrameworkGear Framework на Github
phpшник
Цитата |
В 64-битных версиях PHP корректный диапазон временных меток фактически бесконечен, так как 64 битов хватит для представления приблизительно 293 миллиарда лет в обоих направлениях. |
Это не unix timestamp. Вычислить любую метку можно и руками, только это будет результат вычисления, а не метка unix timestamp.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
killer8080
31.01.2014 - 12:43
linker
я понял так, что под условие 45 -30 лет должны попасть все у кого год рождения с 69 по 84
Иначе кто родился 31 января 69 в условие попал, а 30 января уже нет, хотя им обоим 45 лет. Спорить не буду, может я не правильно понимаю что требуется. Пусть ТС уточнит что именно ему нужно.
linker
31.01.2014 - 12:47
killer8080Ну да, я допетрил уже, что возраст и дата рождения немного разные вещи. Пересмотрел вопрос ТС и у него промелькнуло и дата рождения и возраст. Поэтому пущай как ему нужно, то и выбирает.
_____________
Gear FrameworkGear Framework на Github
phpшник
31.01.2014 - 13:04
в общем, mktime() возвращает ниже 70 года отрицательный timestamp, а msql его не понимает. также и date("Y-n-j",-284061600) == 1960-12-31 вычисляет. Так что я рад что так получается. Теперь я храню отрицательный timestamp в БД под типом integer. ура так даже проще и меньше кода
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.