这是我当前的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
是否过期,文件无法下载。
怎么做?
答案 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();