【问题标题】:SQL Converting Time to Half Hour Increments and Extracting only HH:MMSQL 将时间转换为半小时增量并仅提取 HH:MM
【发布时间】:2017-03-28 12:08:59
【问题描述】:

我需要显示一份报告,该报告在 24 小时内以半小时为增量对会话进行计数。我使用了以下 case 语句,它可以很好地转换日期字段中的分钟。

case when datepart (mi,"tablename.name") < 30 
then dateadd(hh, datediff(hh, 0, "tablename.name")+0, 0) else dateadd (mi, 30, 
dateadd(hh, datediff(hh, 0, "tablename.name")+0, 0)) end,

现在我在拔出 hh:mm 时遇到了麻烦。我试过这个,但它只给了我两个额外的列。

DATEPART(HH,"tablename.name") AS 'Start_Hour',
DATEPART(minute,"tablename.name") AS 'Start_Min'

【问题讨论】:

  • 标记您正在使用的 dbms。使用的日期/时间函数是特定于产品的。

标签: sql


【解决方案1】:

试试这个:

CAST(DATEPART(Hour,"tablename.name") as char(2)) + ':' + 
CAST(DATEPART(minute,"tablename.name") as char(2)) As Start_Time

【讨论】:

  • 谢谢,这有助于将时间输入一个字段,我还需要将分钟显示为 0 或 30。
【解决方案2】:

假设这是在 T-SQL 中,您可以使用 format 来处理字符串格式:

select format(
  dateadd(minute, round(datediff(minute, '2010-01-01', "tablename.name") / 30, 0)*30, '2010-01-01')
  , N'hh\:mm') 
      from ...

从这个answer调整到最近的间隔。

【讨论】:

  • 谢谢 Jeremy,我想这几乎可以让我到达那里,我只需要显示 AM/PM 或以 24 小时格式显示。
  • 使用hh:mm tt 获取上午/下午
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多