我正在处理SSRS报告,我需要在表中显示每小时的数据计数。 每小时的时间间隔需要显示为下午4:00 - 下午5:00 我有一个日志表,每个事务都有DateTime。此表每天更新。 我在此时间戳的小时组件上分组以获得小时计数。 SQL/SSRS中是否有任何选项可用于将小时值转换为04:00 pm-05:00 pm格式?在T-Sql中的DateTime到时间间隔
0
A
回答
0
使用case语句:
SELECT CASE
WHEN DATEPART(hour,TransactionDateTime) = 0 THEN '12:00am-01:00am'
WHEN DATEPART(hour,TransactionDateTime) = 1 THEN '01:00am-02:00am' ...
END FROM your_table
动态方式:
SELECT CASE
WHEN DATEPART(hour,TransactionDateTime) >12 THEN cast (DATEPART(hour,TransactionDateTime) -12 as VARCHAR (2)) + ':00pm-' +cast(DATEPART(hour,TransactionDateTime) -11 as VARCHAR (2)) + ':00pm'
WHEN DATEPART(hour,TransactionDateTime) <12
cast (DATEPART(hour,TransactionDateTime) as VARCHAR (2)) + ':00am-' +cast(DATEPART(hour,TransactionDateTime)+1 as VARCHAR (2)) + ':00am'
WHEN DATEPART(hour,TransactionDateTime) =12
cast (DATEPART(hour,TransactionDateTime) as VARCHAR (2)) +':00pm-1:00pm'
END
FROM your_table
对于极端情况(23:00)手柄时使用嵌套case语句/分。检查日期部分并根据结果返回上午/下午。自从我通过智能手机发布此信息后,我无法测试该查询。
希望这有助于
+0
是否没有动态选项? – viky
0
使用下面的脚本日期时间换算成12小时格式。
SELECT LEFT (STUFF(RIGHT('0'+LTRIM(RIGHT(CONVERT(varchar,YourColumn,100),7)),7),6,0,''),2)+':00'+RIGHT (LTRIM(RIGHT(CONVERT(VARCHAR(20), YourColumn, 100), 7)),2)
+' - '+LEFT (STUFF(RIGHT('0'+LTRIM(RIGHT(CONVERT(varchar, DATEADD(hh, 1, YourColumn),100),7)),7),6,0,''),2)+':00'+RIGHT (LTRIM(RIGHT(CONVERT(VARCHAR(20), DATEADD(hh, 1, YourColumn), 100), 7)),2)
FROM YourTable
输出示例:
+0
它仍然给我分钟组件,我需要00分钟 – viky
+0
使用更新的脚本。 –
0
我会建议您只需创建SQL Server中的简单的标量函数为这一个。见下面的例子:
CREATE FUNCTION DateTimeToHourInterval
(
@currentDateTime DATETIME
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @nextHourDateTime DATETIME = DATEADD(HOUR, 1, @currentDateTime);
DECLARE @intervalStart VARCHAR(10) = REPLACE(REPLACE(LTRIM(RIGHT(CONVERT(VARCHAR(50), DATEADD(MINUTE, -1* DATEPART(MINUTE, @currentDateTime), @currentDateTime), 100), 7)), 'PM', ' PM'), 'AM', ' AM');
DECLARE @intervalEnd VARCHAR(10) = REPLACE(REPLACE(LTRIM(RIGHT(CONVERT(VARCHAR(50), DATEADD(MINUTE, -1* DATEPART(MINUTE, @nextHourDateTime), @nextHourDateTime), 100), 7)), 'PM', ' PM'), 'AM', ' AM');
RETURN @intervalStart + ' - ' + @intervalEnd
END
功能现在可以使用如下:
SELECT dbo.DateTimeToHourInterval(GETDATE());
相关问题
- 1. TSQL计算事件块之间的时间间隔
- 2. TSQL选择2和3周的时间间隔
- 3. React中的react-datetime +设置间隔
- 4. 如何计算MySQL中的datetime间隔?
- 5. TSQL:日期时间重叠和间隔值
- 6. 检索一组具有时间间隔的DateTime值
- 7. 从DATETIME列检索数据的时间间隔MySQL/PHP
- 8. TSQL组由下午3点到下午3点的时间间隔
- 9. 在C中定义的时间间隔
- 10. 在java中设置的时间间隔
- 11. 在c#中的时间间隔#
- 12. C#Unix时间戳到DateTime
- 13. UNIX时间戳到MySQL DATETIME
- 14. 定时器得到间隔时间
- 15. 在随机时间间隔
- 16. 聚集在时间间隔
- 17. 找到不同的时间间隔
- 18. 缩放到时间间隔的域
- 19. 组间隔时间间隔20秒
- 20. Fullcalendar时间间隔
- 21. TSQL DateTime到DateKey Int
- 22. 在一天中提取时间间隔
- 23. 在javascript/nodejs中清除时间间隔
- 24. 在java中创建时间间隔
- 25. 在Java中将时间拆分为相等的时间间隔
- 26. vbscript中的时间间隔之间的时间
- 27. 多行的时间间隔
- 28. Joda时间的LocalDate间隔
- 29. 在Excel中舍入到最近的15分钟间隔时间
- 30. 为什么TSQL转换日期时间 - > varchar - > datetime?
转换计数,或列名?这两个都是可行的,但我相信你知道如何改变SSRS中tablix的标题。你能详细说一下吗? – scsimon
我试过右(100 + datepart(小时,getdate()),2),但它给我的值从0到23 – viky
而且没有办法将日期时间转换为你想要的值? – dfundako