按星期几和时间过滤日期

时间:2018-11-08 12:56:29

标签: mysql sql date datetime

我正在寻找一种方法来获取星期五(dayofweek = 6)的数据,但仅在09AM到05PM之间。这可能吗?用什么方式?

最后一个月的最后一个星期五,我只希望查看从09AM到5PM的数据。

我有一个简单的created_on datetime列。

我尝试过的内容以及此查询的不同变体:

Select i.created_on from issues i
where DAYOFWEEK(i.created_on) IN (6)
and i.created_on between 'yyyy-mm-dd 09:00:00' and 'yyyy-mm-dd 17:00:00'

Select i.created_on from issues i
where DAYOFWEEK(i.created_on) IN (6)
and i.created_on between '09:00:00' and '17:00:00'

我得到零结果,因为我错过了一些东西。如果我将确切的日期和时间放在一起,那么它可以工作,但我不想只寻找时间。日期可以是任何星期五。

2 个答案:

答案 0 :(得分:0)

where dayofweek(created_at) = 6
and time(created_at) > '09:00:00'
and time(created_at) < '17:00:00'

答案 1 :(得分:0)

您可以检查所有条件,如下所示:

WHERE created_on >= LAST_DAY(CURRENT_DATE - INTERVAL 2 MONTH) + INTERVAL 1 DAY
AND   created_on <  LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH) + INTERVAL 1 DAY
AND   DAYOFWEEK(created_on) = 6
AND   HOUR(created_on) BETWEEN 9 AND 16
  • LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH) + INTERVAL 1 DAY将为您提供当月的01
  • LAST_DAY(CURRENT_DATE - INTERVAL 2 MONTH) + INTERVAL 1 DAY将给您上个月的01
  • DAYOFWEEK(created_on) = 6将过滤星期五
  • HOUR(created_on) BETWEEN 9 AND 16会将时间从09:00过滤到16:59:59.999