【问题标题】:How to check how many hours of two datetimes is between a fixed timerange如何检查两个日期时间在固定时间范围之间有多少小时
【发布时间】:2020-06-27 23:32:59
【问题描述】:

我有以下情况:

我有一个从 17 小时到 22 小时的时间范围。

例如然后我有一行包含以下信息:

Starttime (datetime): 2020-03-16 13:15:00
Endtime (datetime): 2020-03-16 19:45:00

如何获得固定时间范围(--> 2:45h)之间的小时数

【问题讨论】:

  • 不,这是获得两个日期时间之间差异的答案 - 我想知道固定时间范围内两个日期时间之间的差异。
  • 到目前为止你尝试过什么?你被困在哪里了?
  • 获取两个时间戳的差异,然后使用 WHERE 子句过滤选择,使差异小于 225 分钟(根据您的要求为 2h 45m)。
  • @itranger A min-max 可以解决你的 Q 部分(伪代码):min(end_range, end_time) - max(start_range, start_time),假设 end > start。

标签: mysql sql date datetime select


【解决方案1】:

假设开始/结束时间不跨越几天,您可以使用timediff()greatest()least()

select timediff(
    greatest(time(start_time), '17:00:00'),
    least(time(endtime), '22:00:00')
)

greatest(time(start_time), '17:00:00') 如果start_time 的(时间部分)小于 17 小时,则为您提供 17 小时。

least(time(endtime), '22:00:00' 如果结束时间大于 22 小时,则生成 22 小时。

【讨论】:

  • 您好,非常感谢您的回答。我对以下条目有疑问: Starttime (datetime): 2020-03-21 00:00:00 Endtime (datetime): 2020-03-21 02:04:42 它返回 14:55:18.000000 但它应该返回NULL 因为时间不在 17h 和 22h 之间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2019-04-17
相关资源
最近更新 更多