【发布时间】:2012-12-19 18:38:14
【问题描述】:
我总是将我的日期作为 unix 时间戳存储在数据库中。现在我有两个日期: 我想在网站上显示的一些图像的开始日期和结束日期。图片应在“开始日期”上可见,并在到达“结束日期”后消失。
我现在使用这个简单的查询:
SELECT name, image, link
FROM exclusive
WHERE CURDATE( ) >= from_unixtime( start_date, '%d-%m-%Y' )
AND CURDATE( ) <= from_unixtime( end_date, '%d-%m-%Y' )
AND category = 'movies'
LIMIT 0 , 5
但这每次都返回一个空结果,尽管数据范围内有两个字段。
我在这里做错了什么?
提前致谢。
【问题讨论】:
-
没有必要为
FROM_UNIXTIME()指定格式,而且您确实给出了错误的格式。应该是 yyyy-mm-dd,而不是 dd-mm-yyyy,%Y-%m-%d -
Michael:这听起来很奇怪,但我使用的是 jquery datepicker。我在那里选择的格式是 d-m-Y。我知道默认格式应该是 Y-m-d,但在我居住的国家/地区,我们使用不同的日期格式。所以即使做了你刚才建议的事情,它仍然不起作用。谢谢!
-
查询前转换一下
-
@moonwalker 您没有将日期作为字符串存储在数据库中,对吧?时间比较(尽管可能很棘手)应该与语言环境无关;所以你应该在一个独立于语言环境的空间中进行比较,比如时间戳。
-
@Javier:好的,现在知道了。非常感谢您的帮助。
标签: mysql unix-timestamp