【问题标题】:Greater than and less than in my sqlmysql中的大于和小于
【发布时间】:2016-01-20 09:40:03
【问题描述】:

我需要从 2016-01-19 到 2016-01-21 获取数据,包括日期。所以我使用这样的查询

"SELECT * FROM events WHERE start_date <= '2016-01-21%' AND start_date >= '2016-01-19%'"

但我只得到了 2016-01-19,2016-01-20 的数据,而不是 2016-01-21。如果该查询有任何错误。请分享答案。

【问题讨论】:

  • 对mysql使用between关键字

标签: php codeigniter mysqli


【解决方案1】:

使用between

SELECT * 
FROM events 
WHERE start_date BETWEEN date(2016-01-21 00:00:00) AND date(2016-01-19 23:59:59);

【讨论】:

    【解决方案2】:

    尝试使用betweendate 函数

    SELECT * FROM events WHERE start_date BETWEEN date(2016-01-21) AND date(2016-01-19)
                                              ^          ^                   ^
    

    【讨论】:

    • @Abdulla ;PHP 中不是必需的
    • 在我的数据库中 start_date 是 (2016-01-21 04:00:00) 这种格式,所以我使用 (2016-01-21%)。使用这个如何编写查询
    • 使用like运算符如何获取它
    • 使用like运算符如何获取它
    【解决方案3】:

    首先请确保“start_date”的数据库归档类型datetime我们还需要格式化日期时间到日期

    尝试运行这个

    SELECT * FROM events WHERE ( DATE_FORMAT( start_date,  '%Y-%m-%d' ) >= '2016-01-19' AND DATE_FORMAT( start_date,  '%Y-%m-%d' ) <= '2016-01-21' ) 
    

    【讨论】:

    • start_date 的数据类型是日期时间。我使用了您的查询,但它返回的结果与我的查询相同。
    • 只返回19和20个数据,不显示21个数据
    • 这个答案可以打勾吗,有勾号
    【解决方案4】:

    您可以使用 BETWEEN ,但请记住,使用时第一个日期必须小于第二个日期。对不起,第一个答案正好相反。

      SELECT * 
      FROM events 
      WHERE start_date 
      BETWEEN  date(2016-01-19 00:00:00)
      AND   date(2016-01-21 23:59:59)
    

    【讨论】:

      猜你喜欢
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多