尝试使用BETWEEN条件根据日期返回行但没有结果

时间:2012-01-13 17:53:34

标签: mysql phpmyadmin

我有一个包含事件列表的数据库,它的格式如下:

  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算法的特点,还是我的查询仍然错误?

4 个答案:

答案 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'