我在报表生成器表中有一个 SQL 时间字段,我想对其进行格式化。在这种情况下,我想将字段格式化为
[SlotTime]
格式。
hh:mm tt
的格式设置如下:
SlotTime
值均显示
SlotTime
。注释由于
#Error
[SlotTime]
,因为这将生成 VARCHAR 字段而不是 TIME 字段。
FORMAT(SlotTime, 'hh:mm tt')
开始,而不是
01:00 PM
。
08:00 AM
实际上是
8:00 AM
的行。 2023-08-31 08:00:00
的行不会与 2023-09-01 8:00 AM
的行并排。您必须向下滚动 24 小时或行条目才能看到第二天。
2023-08-31 08:00:00
、
SlotDate
和 SlotTime
的小片段。
将 TIME 列转换为 DATETIME。这将作为结果 DATETIME 的年、月、日分别为 1900、01 和 01。
我创建了一些简单的数据,包含 3 天、每天 8 个时段,并添加了一些任意的“金额”列。
原谅那些糟糕的列名...
SlotStatus
如您所见,在最终的 select 语句中,我添加了一个列
declare @t table (dt date, tm time, amount int)
INSERT INTO @t VALUES
('2023-08-29', '08:00:00', 1), ('2023-08-29', '08:15:00', 2), ('2023-08-29', '08:30:00', 3), ('2023-08-29', '08:45:00', 4), ('2023-08-29', '09:00:00', 11), ('2023-08-29', '09:15:00', 12), ('2023-08-29', '09:30:00', 13), ('2023-08-29', '09:45:00', 14),
('2023-08-30', '08:00:00', 11), ('2023-08-30', '08:15:00', 12), ('2023-08-30', '08:30:00', 13), ('2023-08-30', '08:45:00', 14), ('2023-08-30', '09:00:00', 111), ('2023-08-30', '09:15:00', 112), ('2023-08-30', '09:30:00', 113), ('2023-08-30', '09:45:00', 114),
('2023-08-31', '08:00:00', 21), ('2023-08-31', '08:15:00', 22), ('2023-08-31', '08:30:00', 23), ('2023-08-31', '08:45:00', 24), ('2023-08-31', '09:00:00', 211), ('2023-08-31', '09:15:00', 212), ('2023-08-31', '09:30:00', 213), ('2023-08-31', '09:45:00', 214)
SELECT *, dttm = cast(dt as datetime) + cast(tm as datetime) FROM @t
(日期时间),它从各个日期 (dt) 和时间 (tm) 列创建日期时间列。
现在我们有了这个,真的很简单......添加矩阵,将
dttm
字段拖放到列占位符上,将
dt
字段拖放到行占位符上,将 tm
字段拖放到数据占位符上。这几乎设置了一切。现在交换第一列中的 amount
字段并选择
tm
。所以我们不是按日期分组的列,按时间分组的行,而是显示行标题的组合日期时间 (dttm
) 字段。
最后,将dttm
文本框格式设置为
dttm
这是最终的设计和输出。