我有一个包含事件列表的数据库,它的格式如下:
Datef Event Location Discipline 10/01/2012 MG Training Brooklands MG
我正在运行此查询以获取某些日期之间的结果:
SELECT * FROM events WHERE Discipline IN ('MG') AND Datef BETWEEN 01/01/2012 AND 31/01/2012
查询运行正常,我知道数据库中有相关结果,但在phpmyadmin中运行查询时没有收到任何结果(我只是告诉“你的SQL查询已成功执行”)。
我想知道是否有人知道为什么这不会返回结果?
更新 将日期放在引号中(例如SELECT * FROM events WHERE Discipline IN('MG')和Datef BETWEEN 01/01/2012 AND 31/01/2012)有点有效,但有一个错误。 我确定某些日期不起作用。例如
SELECT * FROM events WHERE Discipline IN ('COMM') AND Datef BETWEEN '2012-02-01' AND '2012-02-29'显示没有结果,即使2010-02-01上有活动。这是BETWEEN算法的特点,还是我的查询仍然错误?
答案 0 :(得分:1)
如果没有引号或任何将这些值指定为日期的内容,它只会对您编写的整数进行数学运算。
换句话说,你要求
BETWEEN 01/01/2012 AND 31/01/2012
所以你得到1/1 = 1,然后是1/2012几乎是0。
然后你做31/1 = 31,然后是31/2012,这也差不多是0。
所以它变成
BETWEEN 0 and 0
答案 1 :(得分:0)
尝试将代码包装为strtotime()。 MySQL和PHP使用不同的格式。
有关其他信息,请参阅以下几个链接:
http://www.richardlord.net/blog/dates-in-php-and-mysql http://www.binarytides.com/blog/parse-and-format-dates-between-php-and-mysql/
答案 2 :(得分:0)
您的列日期类型错误,应为datetime
答案 3 :(得分:0)
SELECT
*
FROM
`events`
WHERE
`Discipline` IN ('MG')
AND
`Datef` BETWEEN '2012-01-01' AND '2012-01-31'