我想从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
没有回应。
谢谢你的帮助
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代码中转换。
如果您的列是TIMESTAMP
类型,那么它使用MySQL的默认日期格式,而不是Unix时间戳。调用DATE(fecha)
也是明智的,这样只比较日期部分,而忽略小时、分钟、秒。
SELECT *
FROM pedido
WHERE DATE(fecha) BETWEEN '2011-10-10' AND '2011-11-10'
ORDER BY fecha DESC