我想创建一个查询,它在两个日期和两次之间返回一些值......
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');
我做错了什么? :(
答案 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您可以将fecha
与horain
字段值连接起来,然后搜索下面给出的结果。
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参数。
Value1
String from which concatenate value1 to value2
Value2
String want to concatenate in last
希望它会对你有所帮助
感谢。