选择mysql时间戳范围

时间:2011-11-10 15:34:05

标签: php mysql timestamp

我试图从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的帮助

2 个答案:

答案 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
相关问题