2011-11-10 127 views
2

我试着去选择从MySQL数据库中,并具有即时通讯的问题,不知道为什么一个时间戳范围。选择MySQL的时间戳范围

我有表“pedido”和字段“日期星”,其被设置为时间戳。我有很多条目,所以这不应该是问题。

但是当y与此查询选择:

SELECT * FROM pedido WHERE fecha BETWEEN UNIX_TIMESTAMP('2011-10-10') AND UNIX_TIMESTAMP('2011-11-10') ORDER BY fecha DESC 

我没有得到任何回应。

Thanls的帮助

+0

也许你可以在你的表格中发布字段类型? – jjwdesign

+0

@jjwdesign,字段类型是'TIMESTAMP' – Johan

回答

6

MySQL不会把存储日期/时间数据作为整数。
UNIX_TIMESTAP()返回一个整数自1970年1月1日上市秒。
您正在比较日期和整数。这将无法工作。

重写查询到:在PHP 确实使用unix_timestamps所以,如果你想在PHP比较

SELECT * 
FROM pedido 
WHERE fecha BETWEEN '2011-10-10 00:00:00' AND '2011-11-10 23:59:59' 
ORDER BY fecha DESC 

注意,你需要或者转换为unix_timestamp在SQL语句或在你的PHP转换码。

+0

样的逻辑,当你说这 –

0

如果你的列是TIMESTAMP类型,然后使用MySQL的默认日期格式,而不是Unix时间戳。也可以拨打DATE(fecha)以便只比较日期部分,忽略小时,分钟和秒。

SELECT * 
FROM pedido 
WHERE DATE(fecha) BETWEEN '2011-10-10' AND '2011-11-10' 
ORDER BY fecha DESC 
+0

,将杀死使用索引的任何变化,除了'BETWEEN'是全方位的,所以如果你想避免** **那个问题,只是做'WHERE出生日期BETWEEN '2011-10-10' 和“2011-11-10 23:59:59''这将是多得更快,如果'fecha'索引。 – Johan