我试图从mysql数据库中选择一个时间戳范围而且我遇到了问题,不明白为什么。
我将表'pedido'和字段'fecha'设置为时间戳。我有很多条目,所以不应该是问题。
但是当y选择此查询时:
SELECT * FROM pedido WHERE fecha BETWEEN UNIX_TIMESTAMP('2011-10-10') AND UNIX_TIMESTAMP('2011-11-10') ORDER BY fecha DESC
我没有回复。
Thanls的帮助
答案 0 :(得分:7)
MySQL 不将日期/时间数据存储为整数
UNIX_TIMESTAP()
返回一个整数,列出自1-1-1970以来的秒数
您正在将日期与整数进行比较。这将永远不会奏效。
将查询重写为:
SELECT *
FROM pedido
WHERE fecha BETWEEN '2011-10-10 00:00:00' AND '2011-11-10 23:59:59'
ORDER BY fecha DESC
注意php 确实使用unix_timestamps
所以如果你想在php中进行比较,你需要在你的SQL语句中转换为unix_timestamp
或者在你的php中转换码。
答案 1 :(得分:0)
如果您的列是TIMESTAMP
类型,那么它使用MySQL的默认日期格式,而不是Unix时间戳。调用DATE(fecha)
也是明智的,这样只比较日期部分,忽略小时,分钟,秒。
SELECT *
FROM pedido
WHERE DATE(fecha) BETWEEN '2011-10-10' AND '2011-11-10'
ORDER BY fecha DESC