如何验证MySQL查询的到期日期

时间:2010-06-23 16:22:29

标签: php mysql datetime

这是我当前的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是否过期,文件无法下载。

怎么做?

2 个答案:

答案 0 :(得分:8)

SELECT * FROM download WHERE expiry_date > CURRENT_TIMESTAMP

SELECT * FROM download WHERE expiry_date > NOW()

答案 1 :(得分:1)

您需要考虑的一个问题是您的expiry_date存储的时区与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();