Mysql DATETIME связанные запросы: как рассчитать срок действия записи? - PullRequest
2 голосов
/ 29 сентября 2010

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

id  |  elem1   |   timestamp    |  maxdays   |  active
1   |  jondoe  |   2010-09-28   |    60      |     1
1   |  foo     |   2010-09-18   |    30      |     1
1   |  janedo  |   2010-09-08   |   120      |     1
1   |  bar     |   2010-08-28   |    30      |     0

maxdays - это значение в днях (60 = 2 месяца и т. Д.)

Мне в основном нужен запрос, чтобы вычислить, когда истекает срок действия этих записей

Я хоть что-то вроде этого, но я не знаю, как перевести это в реальный запрос (это ниже не работает)

SELECT * FROM my_tb WHERE timestamp+maxdays < NOW()

поэтому в основном с помощью этого запроса я могу проверить, превысила ли строка количество дней (начиная с даты метки времени), а затем я могу обновить ячейку active до 0

Ответы [ 3 ]

1 голос
/ 29 сентября 2010
SELECT * FROM my_tb WHERE timestamp + INTERVAL maxdays DAY < CURRENT_TIMESTAMP;
1 голос
/ 29 сентября 2010

Отметка времени представляет собой количество секунд.

Один день равен 24 (часам) * 60 (минутам) * 60 (секундам), поэтому ваш запрос должен выглядеть следующим образом:

SELECT * FROM my_tb WHERE timestamp + ( maxdays * 24 * 60 * 60 ) < NOW()
0 голосов
/ 08 сентября 2013

Я использовал

SELECT * FROM password_change_requests WHERE username=:username AND time + 3600 > NOW()

, чтобы найти запись, которой меньше часа.Кстати, оператор SELECT - это оператор PDO, если вам интересно, почему он выглядит немного забавно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...