【问题标题】:MySQL Time and Date query problemsMySQL时间和日期查询问题
【发布时间】:2012-05-08 16:58:03
【问题描述】:

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

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 的值(所以从早上 7 点到早上 6 点 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');

我做错了什么? :(

【问题讨论】:

  • 您是否收到任何错误消息?如果是这样,您可以将它们包括在您的问题中吗?
  • 你最好粘贴表的Schema。比如“fecha”的数据类型是TEXT还是Datatime?

标签: mysql date time


【解决方案1】:

您可以使用Concat() 获取结果。它连接两个字段值。所以您可以将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

希望对你有帮助

谢谢。

【讨论】:

  • 成功了!!谢谢 :D 我点燃了我的大脑,试图让它变得非常有用!
【解决方案2】:

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

开始于:

SELECT * FROM mytable

继续:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我遇到了同样的问题,我在发布查询之前也尝试过:(
    • 尝试调整您的数据库,以便将日期和时间保存在一条记录中。为此,您可以使用 DateTime 字段类型。然后做SELECT * FROM mytable WHERE MyDate &gt;= 2012-05-07 13:23:04 AND MyDate &lt;= 2012-05-08 06:59:59 );
    【解决方案4】:

    时间和日期单独检查

    如果我们重组您的 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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多