【问题标题】:MYSQL select date now-1 day with TIME and between dateMYSQL 现在选择日期 - 1 天,时间和日期之间
【发布时间】:2020-02-05 23:18:30
【问题描述】:

我想选择当前 day-1 与特定时间 08:00am 之间的所有行,到现在还有特定时间。这不起作用,例如示例行代码

WHERE SOME_DATE_COLUMN BETWEEN DATE_SUB(DATE(NOW() - INTERVAL 1 DAY) '08:00:00', '%Y-%m-%d %H:%i:%s') AND DATE_SUB(DATE(NOW()) '08:00:00', '%Y-%m-%d %H:%i:%s');

我也试过 DATE_FORMAT

WHERE SOME_DATE_COLUMN BETWEEN DATE_FORMAT(DATE(NOW() - INTERVAL 1 DAY) '08:00:00', '%Y-%m-%d %H:%i:%s') AND DATE_FORMAT(DATE(NOW()) '08:00:00', '%Y-%m-%d %H:%i:%s');

如果我今天运行 sql,我想选择当前日期减去 1 天从上午 08:00 到当前日期上午 8:00 之间的所有记录

【问题讨论】:

  • 究竟是什么不起作用?因为由于语法无效,您的查询甚至没有执行......
  • If used DATE_SUB then syntax error If used DATE_FORMAT then Incorrect parameters in call to native function 'DATE_FORMAT'

标签: mysql sql date datetime


【解决方案1】:

我愿意:

where 
    some_date_column >= current_date - interval 16 hour
    and some_date_column < current_date + interval 8 hour

current_date 为您提供当前日期(不包括时间部分)。然后,您可以添加和减去所需的小时数。

请注意,此查询不使用between,而是使用半开区间。如果您想要在时间上保持一致的相邻段,那么您想要排除其中一个边界(按照惯例,通常排除外部边界)。

Demo on DB Fiddle

select current_date - interval 16 hour, current_date + interval 8 hour
current_date - 间隔 16 小时 | current_date + 间隔 8 小时 :-------------------------------- | :---------------------------- 2020-02-04 08:00:00 | 2020-02-05 08:00:00

【讨论】:

  • 不是+8小时
  • 总是正好是上午 08:00
  • 那么如何设置 current_date 和固定时间 08:00am 例如 some_date_column >= current_date - 1day '08:00:00' 和 some_date_column
  • @Kutasek:我认为这个表达式可以满足您的要求。我在我的答案中添加了一个小提琴供您参考。请在您的代码中加入我的表达式,并根据您的数据测试查询。
  • 我不能使用间隔,因为这是我需要的实时 sql,包含 current_date -1 '08:00:00' 到 current_date '08:00:00' 之间的时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多