При инсерте в поле TIMESTAMP - NOW() выводит нули.

Элина

Новичок
При инсерте в поле TIMESTAMP - NOW() выводит нули.

Здравствуйте! Пишу в Ваш форум второй раз! В прошлый Вы мне очень помогли!

У меня такая проблема:

делаетсся запрос в базу:

INSERT INTO table1 (user_id, ok_time)
VALUES ('".$user_id."', NOW()+500);

От этого запроса надо: чтобы в таблицу добавлялась запись с юзер_ид, и временем в будущем, а конкретнее - со меткой времени, кот. наступит через 5 минут.

В таблице поле времени имеет тип TIMESTAMP.

Запрос работает, но НЕ ВСЕГДА.

Я не могу понять, почему работает через раз? Довольно часто в базу добавляется запись, где юзер_ид правильный, а вместо TIMESTAMP - "00000000000000". ПОЧЕМУ?

Искала что-то по документации на www.mysql.com - ничего так и не нашла.

Подскажите, пожалуйста, почему может возникать ошибка? Может как-то можно по-другому реализовать подобное действие?
 

Фанат

oncle terrible
Команда форума
со меткой времени, кот. наступит через 5 минут.
нельзя ли пояснить логику, которая для решения этой задачи заставляет писать NOW()+500?
500 чего? Это 500 прибавляется к чему?
 

Элина

Новичок
500 прибавляется к TIMESTAMP, то есть получается, что в базу должно занестись значение:

20050419205048+500

то есть

20050419205548

Это будет время, которое наступит через 5 минут (5 00). Просто далее при обновлении, скрипт проверяет, что если текущее время достигло этой метки - происходит определенное действие.
 

Фанат

oncle terrible
Команда форума
так прибавлять нельзя.
складывать можно числа.
а ни 20050419205048, ни 500 - не число
 

Элина

Новичок
ну вот... :(

Подскажите пожалуйста! А каким образом можно вставить время в timestamp, чтобы эта дата была на 5 минут больше (3 минуты, 2 минуты, 4 минуты 35 секунд... как угодно еще), то есть, чтобы это время было в формате TIMESTAMP (14) и было как бы в будущем... на несколько минут больше текущего?

Может у Вас будут какие-то идеи? Просто я не могу больше ничего придумать, кроме этого... и ведь иногда эта "дата" инсертится правильно, то есть именно на сколько мне надо минут больше текущего... а иногда неправильно... может каким-то образом NOW()+$minutes вылезает за отпущенный интервал для этого типа данных, и из-за этой ошибки пишется 14 нулей "0000..." ? Но $minutes не бывает больше 500, я специально вывожу эту переменную в брозер ДО того, как происходит вставка в БД.
 

Элина

Новичок
Спасибо за ссылочки, но я там была - пойду еще раз почитаю, может что-то упустила.

Насчет вычислений при выборке - это невозможно, к сожалению... :( В БД надо добавить запись именно с той датой, когда произойдет событие, иначе там всю систему никак не реализовать 100%.
 

Фанат

oncle terrible
Команда форума
может что-то упустила.
к гадалке не ходи
В БД надо добавить запись именно с той датой, когда произойдет событие, иначе там всю систему никак не реализовать 100%.
в этом случае осмысленность применения поля типа timestamp равна нулю.
 

Элина

Новичок
Спасибо Вам огромное! Первая ссылка - решение! :)

INSERT foo... , NOW() + INTERVAL "'.$minutes."' SECOND

300 секунд = 5 минут :)

Здорово! Пока все вроде работает как часы! :) СПАСИБО ЕЩЕ РАЗ! :)
 

chira

Новичок
Элина
INSERT foo... , NOW() + INTERVAL "'.$minutes."' SECOND
через месяц или два просматривая этот код, можно сделать вывод, что там ошибка
желательно писать:
INSERT foo... , NOW() + INTERVAL "'.($minutes*60)."' SECOND
INSERT foo... , NOW() + INTERVAL "'.$minutes."' MINUTE
 

Элина

Новичок
chira

Почему через пару месяцев можно будет сделать вывод, что там ошибка, я не очень понимаю?..

Дело в том, что интервал далеко не всегда = целым минутам, он может быть и 2 минуты и 24 секунды, или 57 секунд и т.д., и придется производить лишние вычисления целых минут и оставшихся секунд... разве тот способ, что предложила я - не подходит?
 

SelenIT

IT-лунатик :)
Элина
Полагаю, chira имел в виду всего лишь несоответстие названия переменной ее содержимому )
 

Элина

Новичок
SelenIT

Ааа! :) Теперь все понятно! :) Да, действительно! И название переменной я исправила, как только нашла решение! :)

Спасибо Вам всем! :) Отличный форум, отличные люди!
 
Сверху