【问题标题】:mySQL DateDiff Hour by DatemySQL DateDiff 小时按日期
【发布时间】:2016-10-13 08:24:50
【问题描述】:

我正在寻找有关如何在 mySQL 中按日期分组时以小时为单位完成日期差异的一些想法。例如,以下日期的正常 DateDiff (Hours) 方法将产生 49 小时,但我感兴趣的是哪些天在总 49 小时中所占的份额:

Date 1: 2016-06-12 12:00
Date 2: 2016-06-14 13:00

结果:

开始                         结束                        差异
2016-06-12 12:00     2016-06-13 00:00  12 小时
2016-06-13 00:00     2016-06-14 00:00  24 小时
2016-06-14 00:00     2016-06-14 13:00  13 小时

谢谢!

【问题讨论】:

  • 你有一个每个日期一行的日历表吗?
  • 我没有。但如果需要,这很容易包含在解决方案中。

标签: mysql sql date datetime


【解决方案1】:

假设您有一个日历表并且开始和结束日期在变量中,那么这样的逻辑应该可以满足您的需求:

select c.date, c.date + interval 1 day,
       timstampdiff(hour,
                    greatest(c.date, $start),
                    least(c.date + interval 1 day, $end)
                   )
from calendar c
where c.date >= date($start) and c.date < date($end) + interval 1 day

【讨论】:

  • 谢谢。我现在就试一试,然后告诉你。
  • 我正在努力解决一些缺陷。即,日期表(每个日期从午夜开始)不适用于此...因为第一个日期从下午 12:00 开始。
  • @JasonWasho 。 . .我认为提取日期部分应该可以解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
相关资源
最近更新 更多