Конкретно в MySQL хранится datetime. Мне нужно отсечь те DateTime, до которых осталось например менее получаса (варианты). Причем сравнение с учетом дня, месяца и года (Не хотелось бы, чтобы все рухнуло при смене месяца или года) если дадите функцию суммарного времени в секундах с учетом дня, месяца и года, буду тоже благодарен (остальное дело техники) Смысл в том, чтобы клиенты не могли отменить заказ, до выполнения которого осталось менее получаса
в PHP вам бы пригодилась mktime(), так как она умеет учитывать все смещения дат - т.е. например она знает что январь 2006 + 13 месяцев = февраль 2007....
Интесная штука. Делаю запрос Код (Text): SELECT UNIX_TIMESTAMP('1970-01-01 00:00:00'); возращает 0. Логично. Второй запрос Код (Text): SELECT UNIX_TIMESTAMP('1970-01-02 00:00:00'); возращает 79200. Проверьте кто-нибудь у себя эти запросы, может быть это только у меня глючит MySQL.
Код (Text): SELECT id FROM table WHERE UNIX_TIMESTAMP(datetime_field)-1800<{$now} где id - перечень выбираемых полей datetime_field - имя поля datetime 1800 - полчаса в секундах {$now} - текущее время в секундах определяется функцией php time(). Можно заменить на функцию sql NOW(), но лучше лишние вычисления вынести из запроса.[/code]
Тоже не правильно. Цифры те же, но переставлены местами В сутках 60*60*24 = 86400 секунд. У меня MySQL 5.0.22
Mavir Рекомендую найти учебник по географии для 5 класса и узнать о существовании часовых поясов. А заодно запомни, что MySQL никогда не глючит. И если тебе вдруг так показалось, это значит, что это ты чего-то не знаешь.
Не вижу связи. Ок. Выполни запросы Код (Text): SELECT UNIX_TIMESTAMP('1970-01-01 00:00:00'); SELECT UNIX_TIMESTAMP('1970-01-01 00:01:00'); У меня в обоих случаях выдает ноль.
Mavir, Код (Text): SELECT round((to_date('02011970','ddmmyyyy')-to_date('01011970','ddmmyyyy'))*24*60*60) as to_unix FROM DUAL + Oracle 7.3.2.0.0 = 86400 =)))))
1. Чебурген прав. 2. Если Чебурген не прав, смотри документацию к MySQL Часовые часы тут очень даже при чем: ибо вычисляется unix_timestamp с учетом текущего часового пояса. Для Москвы в зимнее время (-3GMT) 1 января 1970 года будет 75600 секунд. А 86400 - это для гринвича. 0 для 1 января 1970 года показывается по одной-единственной причине: это поле не может быть отрицательно. (Иначе было бы -10800).
Что UNIX_TIMESTAMP берет время по Гринвичу я знаю. Ладно, назовем это по другому, не глюк MySQL, а фича, что в первых сутках может быть меньше 24 часов