【问题标题】:MySQL Date range query not working [closed]MySQL日期范围查询不起作用[关闭]
【发布时间】:2016-02-12 15:53:15
【问题描述】:

我有一个具有以下结构的表格

->id
->input_date
->form_num
->name
->address

我的input_date 格式是dataype DATETIME,格式类似于

2015-12-29 12:45:08

我正在制作一个带有日期范围过滤器的报告模块,所以我的查询是:

SELECT * 
FROM golden_leaves.forms 
WHERE input_date >= '2015-02-01 00:00:35' AND input_date <= '2016-02-11 23:08:39' 
ORDER BY id DESC;

所以基本上我想得到 2 月 1 日到 2 月 11 日。但是当我查询它时,我 12 月、1 月的数据也包括在内?是否还获取了 2015 年 12 月的输入日期?我也试过了

WHERE input_date BETWEEN '2015-02-01 00:00:35' AND '2016-02-11 23:08:39' ORDER BY id DESC;

同样的事情。在我的 postgres 数据库中,这工作正常。

【问题讨论】:

  • 可能是因为你是从 2015 年开始的?
  • 2015 年 12 月是 >= '2015-02-01 00:00:35'
  • 上帝,我很抱歉我错过了那个。 :(

标签: mysql database datetime filtering


【解决方案1】:

您的开始日期有误 - 您查询的是 2015 年 2 月以来的日期,而不是 2016 年:

SELECT   * 
FROM     golden_leaves.forms 
WHERE    input_date >= '2016-02-01 00:00:35' AND 
         -- Here ----------^
         input_date <= '2016-02-11 23:08:39' 
ORDER BY id DESC;

【讨论】:

    【解决方案2】:

    您的第二个日期在您的第一个日期之前(尝试颠倒日期的顺序)

    WHERE input_date BETWEEN '2016-02-11 23:08:39' AND '2015-02-01 00:00:35' ORDER BY id DESC;

    【讨论】:

    • 的语法要求第一个vslue小于第二个值。您的回答总是会导致没有记录。
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 2011-01-01
    • 1970-01-01
    • 2020-10-31
    • 2017-09-24
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多