Как проверить дату окончания срока действия на запросе MySQL

Вот моя текущая 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 истекает файл не может загрузить.

Как сделать это?

6
задан OMG Ponies 23 June 2010 в 16:30
поделиться

2 ответа

SELECT * FROM download WHERE expiry_date > CURRENT_TIMESTAMP

or

SELECT * FROM download WHERE expiry_date > NOW()
9
ответ дан 10 December 2019 в 00:32
поделиться

Одна из проблем, которую вам нужно решить, это то, в каком часовом поясе хранится дата истечения срока действия, по сравнению с часовым поясом вашего сервера 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();
1
ответ дан 10 December 2019 в 00:32
поделиться
Другие вопросы по тегам:

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