1

我想做一个查询,返回两个日期和两次之间的一些值......

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

4 回答 4

0

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

从...开始:

SELECT * FROM mytable

继续:

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

依此类推,直到您找到删除所有记录的条件并了解发生这种情况的原因

于 2012-05-08T08:42:32.553 回答
0

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

于 2012-05-08T08:42:36.670 回答
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';
于 2012-05-08T08:45:21.973 回答
0

您可以使用Concat(). 它连接两个字段值。所以您可以连接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 个参数。

  1. Value1
  2. String from which concatenate value1 to value2
  3. Value2
  4. String want to concatenate in last

希望对您有所帮助

谢谢。

于 2012-05-08T08:58:03.880 回答