Как сделать select который выбирает из базы по timestamp без учета пройденных секунд?

Всем привет! такая проблема, у меня есть бд в ней есть дата и время типа timestamp, у меня ест скрипт который каждые 10 сек опрашивает бд и проверяет нет ли записи на это время, например запись в бд на 16032017 21:30:00, а скрипт опрашивает в 16032017 21:30:10, так вот мне надо что бы он понял что это все еще 21 30 и выбрал мне эту запись.
есть несколько вариантов но ни один у меня не сработал. Поле с датой типа varchar

('SELECT linkuser,datapost,mylinkpost FROM links WHERE datapost= UNIX_TIMESTAMP(NOW()/60*60)')
('SELECT linkuser,datapost,mylinkpost FROM links WHERE datapost= CAST(UNIX_TIMESTAMP(NOW()/60*60) AS CHAR)')
('SELECT linkuser,datapost,mylinkpost FROM links WHERE datapost= CAST((%s)/60*60 AS CHAR)',(time_now,)) # тут я передаю время сервера в timestamp
('SELECT linkuser,datapost,mylinkpost FROM links WHERE datapost BETWEEN UNIX_TIMESTAMP(NOW())-10 AND UNIX_TIMESTAMP(NOW())+10')
  • Вопрос задан
  • 385 просмотров
Пригласить эксперта
Ответы на вопрос 2
begemot_sun
@begemot_sun
Программист в душе.
сделать выборку с ...:10 и по ..:20
а вообще если это не индусское легаси то я бы вас выкинул из проекта за такое.
Ответ написан
@maikttt
Можно получить даты как строки, убрать секунды и сравнить
SELECT * FROM dates WHERE SUBSTRING(FROM_UNIXTIME(date),1,16)=SUBSTRING(NOW(),1,16)

Второи вариант, смотрерь на дать как на цыфры вычитая лишние секунды
SELECT * FROM dates WHERE (date - date % 60) = (UNIX_TIMESTAMP() - UNIX_TIMESTAMP() % 60)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы