【问题标题】:Grouping by DATEPART(hh,TimeStamp) to show nightshift, how do I see data for hours past midnight?按 DATEPART(hh,TimeStamp) 分组以显示夜班,如何查看午夜后数小时的数据?
【发布时间】:2015-08-22 11:01:02
【问题描述】:

我正在将数据导入 excel,因此我需要将日期视为 varchar 以用于 excel 中的图表,但我还需要一天中各个小时的数据。我的经理希望在检查我的图表时查看过去一小时的数据。到目前为止,这是我的代码。白班很好,但我无法让夜班超过 24 小时,所以我无法在我的 Excel 图表中对它们进行分组。

convert(VARCHAR, TimeStamp, 101) as date
    ,StationID as lane 
    ,DATEPART(hh,TimeStamp)
        ,.185 as posSD1 
    ,-.185 as negSD1
    ,.370 as posSD2
    ,-.370 as negSD2
    ,.556 as posSD3
    ,-.556 as negSD3


    , COUNT (TrickleActual) as Count
    , convert(decimal (18,3) ,AVG (TrickleActual - TrickleTarget)) as Average



FROM CherryBoxInfo

WHERE TimeStamp >= '2015-05-01'         -- '2015-05-01 18:30:00'
    and  TimeStamp between convert(DATETIME, convert(VARCHAR, TimeStamp, 101) + ' ' + '19:00:00') and convert(DATETIME, convert(VARCHAR, DATEADD(day, 1, TimeStamp), 101) + ' ' + '04:30:00')
    and (TrickleActual-TrickleTarget) BETWEEN -1 and 1



GROUP BY
    convert(VARCHAR, TimeStamp, 101)
    ,StationID
    ,DATEPART(hh,TimeStamp) 



ORDER BY convert(VARCHAR, TimeStamp, 101)
,StationID
,DATEPART(hh,TimeStamp) 

【问题讨论】:

  • 始终标记正确的 dbms..也是您期望的输出和示例数据

标签: sql sql-server excel tsql


【解决方案1】:

不是按日期部分分组,而是按截断为小时的日期分组。

以下是截断日期的方法:

select dateadd(hh, datediff(hh, 0, @dt), 0)

【讨论】:

    猜你喜欢
    • 2016-07-28
    • 2015-09-24
    • 2020-09-30
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    相关资源
    最近更新 更多