Вот моя текущая mysql таблица
id | file | expiry_date
---------------------------------------
1 | sample.zip | 2010-02-03 11:07:03
2 | sample2.zip | 2010-07-13 11:07:03
Запрос:
SELECT *
FROM download
WHERE expiry_date` `how to validate here`
Я хочу проверить если expiry_date
истекает файл не может загрузить.
Как сделать это?
SELECT * FROM download WHERE expiry_date > CURRENT_TIMESTAMP
or
SELECT * FROM download WHERE expiry_date > NOW()
Одна из проблем, которую вам нужно решить, это то, в каком часовом поясе хранится дата истечения срока действия, по сравнению с часовым поясом вашего сервера mysql. Я использовал решения, подобные следующему:
SELECT * FROM `download` WHERE `expiry_date` > NOW();
Это решение, однако, не всегда давало правильный ответ, который я искал, поскольку функция NOW() локализована в часовом поясе сервера mysql. Если ваши expiry_dates не попали на сервер уже локализованными на ваш сервер с помощью NOW(), вы получите некорректное сравнение.
Во всех наших системах мы храним временные метки в базе данных, используя UTC. К сожалению, центр обработки данных, в котором мы размещаемся, требует, чтобы серверы были локализованы на EST, что потенциально может испортить все наши сравнения. Решением стало использование функции UTC_TIMESTAMP(), которая возвращает дату и время UTC без локализации.
SELECT * FROM `download` WHERE `expiry_date` > UTC_TIMESTAMP();