这是我当前的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是否过期,文件无法下载。
如何做到这一点?
发布于 2010-06-24 00:24:05
SELECT * FROM download WHERE expiry_date > CURRENT_TIMESTAMP或
SELECT * FROM download WHERE expiry_date > NOW()发布于 2010-06-24 00:34:36
您需要考虑的一个问题是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();https://stackoverflow.com/questions/3103501
复制相似问题