MySQL时间和日期查询问题

时间:2012-05-08 08:32:39

标签: mysql date time

我想创建一个查询,它在两个日期和两次之间返回一些值......

DATE和TIME值位于不同的列中,DATE称为FECHA,TIME称为HORAIN

我只有DATE查询有4个可能的值:

值1的日期为2012-05-07时间02:45:00 值2的日期为2012-05-07时间12:00:00 值3的日期为2012-05-08时间04:35:00 值4的日期为2012-05-08时间07:30:00

我想得到的是第一天从07:00:00到23:59:59的结果,以及从第二天开始的00:00:00到06:59:59的结果(所以间隔从早上07点到早上06:59)

这是我的查询,它返回NO VALUES ...它必须返回VALUE 2和VALUE 3,因为它符合我的要求

SELECT * FROM mytable
WHERE
(DATE(fecha)>='2012-05-07' AND TIME(horain)>='07:00:00')
AND
(DATE(fecha)<='2012-05-08' AND TIME(horain)<='06:59:59');

我做错了什么? :(

4 个答案:

答案 0 :(得分:0)

尝试一次调试一步 - 消除尽可能多的限制并查看是否获得记录 - 当您获得记录时,一次添加一个条件:

从:

开始
SELECT * FROM mytable

继续:

SELECT * FROM mytable
WHERE
 DATE(fecha)>='2012-05-07'

依此类推,直到找到删除所有记录的条件并查看原因为何

答案 1 :(得分:0)

尝试SELECT * FROM mytable WHERE FECHA >= 2012-05-07 AND horain >= 07:00:00) AND FECHA <= 2012-05-08 AND horain <= 06:59:59 );

答案 2 :(得分:0)

单独检查时间和日期

如果我们重新调整你的where子句并省略你得到的日期部分:

SELECT * FROM mytable 
WHERE TIME(horain)>='07:00:00' AND
TIME(horain)<='06:59:59'

这永远不会给你一个结果,因为两者都不可能是真的。 你可以做的是结合日期和时间字段

SELECT * FROM mytable 
WHERE
concat(fecha,' ',horain) as date BETWEEN '2012-05-07 07:00:00' AND '2012-05-08 06:59:59';

答案 3 :(得分:0)

您可以使用Concat()获取结果。它连接两个字段value.so您可以将fechahorain字段值连接起来,然后搜索下面给出的结果。

SELECT *   FROM `mytable` WHERE (Concat(`fecha`, ' ', `horain`, '') <= '2012-05-08 06:59:59') AND (Concat(`fecha`, ' ', `horain`, '') >= '2012-05-07 07:00:00')

Concat()函数取4参数。

  1. Value1
  2. String from which concatenate value1 to value2
  3. Value2
  4. String want to concatenate in last
  5. 希望它会对你有所帮助

    感谢。