【问题标题】:mysql date between today今天之间的mysql日期
【发布时间】:2011-11-28 16:33:04
【问题描述】:

表:

  • 活动:id、姓名、日期、时间、endDate、endTime

基本上我得到一个查询:

TODAY:
SELECT * FROM activities WHERE DATE(A.date) = DATE(CURDATE())

TOMORROW:
SELECT * FROM activities WHERE DATE(A.date) = (CURDATE() + INTERVAL 1 DAY)

NEXT WEEK:
SELECT * FROM activities WHERE UNIX_TIMESTAMP(A.DATE) BETWEEN '" . strtotime('previous saturday') . "' AND '" . (strtotime('previous monday') - 1) . "'

问题是,我不知道如何解决,当插入结束日期时,它应该在日期和结束日期之间进行搜索。所以如果一个活动昨天开始,今天结束,我们选择“今天”查询,我们仍然想要这个活动。

【问题讨论】:

  • 列类型列date是什么?如果是日期,为什么需要使用 DATE 进行 1 和 2 查询?
  • 您需要指定表的哪些字段是NULL-able(我想endDate 是),以及您希望查询拉出的确切内容(例如,活动开始或结束于给定日期,或在给定日期开放的活动,因此“今天”介于 dateendDate 之间)
  • 所以你想检索所有与感兴趣的时期重叠的活动?

标签: mysql date between


【解决方案1】:
SELECT *
FROM activities
WHERE DATE(now()) BETWEEN DATE(A.startdate) AND DATE(B.enddate)

'between' 语法不仅限于field between val1 and val2,还可以是val between field1 and field2 和其他任意表达式。

【讨论】:

  • 是的,不过如果endDate IS NULL 可能会给出不正确的结果(不确定)
  • ... AND DATE(IFNULL(B.enddate), some_default_value))?
  • 这很有意义,但是如果我们想过滤一个时期之间的日期,例如下周末:AND UNIX_TIMESTAMP(A.DATE) BETWEEN '" .strtotime(' next saturday') . "' AND '" . (strtotime('next monday') - 1) . "'" 所以我们就像 BETWEEN(BETWEEN x BETWEEN Y)
猜你喜欢
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多