有没有办法将这两个T-SQL查询组合起来?我正在使用SQL Server 2014。
目标是能够在转换后的本地时区中获得与UTC时间相反(或附加)的第一个查询的输出。基本上是在本地时区按小时汇总记录。
SELECT
DATEPART(HOUR, TimeUtc) AS UTCHour, Message, Application,
COUNT(Message) AS "Count"
FROM
[DB].[dbo].[TBL]
WHERE
timeutc BETWEEN '2022-10-21 00:00:00.000' AND '2022-10-21 23:59:59.000'
GROUP BY
DATEPART(HOUR, TimeUtc), Message, Application
HAVING
COUNT(Message) > 5
ORDER BY
UTCHour DESC, "Count" DESC
SELECT
CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, TimeUtc), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS ColumnInLocalTime
FROM
[DB].[dbo].[TBL]
WHERE
timeutc BETWEEN '2022-10-21 00:00:00.000' AND '2022-10-21 23:59:59.000'
当前输出示例:(UTC小时表示TimeUTC字段的HH)
UTCHour | 消息 | 应用程序 | 计数 |
---|---|---|---|
23 | 请求失败。 | WebAppv101 | 86756309 |
23 | HTTP 500. | WebAppv101 | 8521 |
22 | 第8层错误。 | WebAppv100 | 21 |
22 | ID10T错误。 | WebAppv101 | 10 |
所需输出示例:(基本上23:00 UTC=16:00 PDT,我不关心格式,即16:00 vs 4PM等,只要输出是PDT格式)。
PDTHour | 消息 | 应用程序 | 计数 |
---|---|---|---|
16 | 请求失败。 | WebAppv101 | 86756309 |
16 | HTTP 500. | WebAppv101 | 8521 |
15 | 第8层错误。 | WebAppv100 | 21 |
15 | ID10T错误。 | WebAppv101 | 10 |
1条答案
按热度按时间3htmauhk1#
这将返回当前时区中的datetime字段,该字段是从
sysutcdatetime
中计算出来的,加上sysdatetimeoffset
返回的分钟数。注意:我不知道函数
sysutcdatetime
和sysdatetimeoffset
是否在SQL Server 2014中可用。当您认为此功能太长而无法键入(或无法记住)时,可以为此创建一个函数:
此后,
SELECT dbo.UTCtoLocale(sysutcdatetime());
应返回本地时间;P.S.选择此函数的名称,当您知道更好的名称时,请随意更改它。😉
使用此函数的SQL查询:
此函数将根据本地日期“2022-10-21”获得结果,您的原始日期是今天的utc日期。