“t”以外的所有格式都会在报表生成器中返回#Error for Time 字段

问题描述 投票:0回答:1

我在报表生成器表中有一个 SQL 时间字段,我想对其进行格式化。在这种情况下,我想将字段格式化为

[SlotTime]
格式。

当我运行报告时,我得到以下信息:

我尝试将

hh:mm tt

的格式设置如下:

当我运行报告时,所有

SlotTime

值均显示

SlotTime

注释

由于
    #Error
  1. 需要在表中保持正确的顺序,因此我无法在 SQL 查询中使用
    [SlotTime]
    ,因为这将生成 VARCHAR 字段而不是 TIME 字段。
    
    
  2. 明细表行从
FORMAT(SlotTime, 'hh:mm tt')

开始,而不是

01:00 PM

    如果使用 DATETIME 字段,则连续每一天的列将错开 24 小时。当使用 DATETIME 行时,
  1. 08:00 AM

    实际上是

    8:00 AM
    的行。
    2023-08-31 08:00:00
    的行不会与
    2023-09-01 8:00 AM
    的行并排。您必须向下滚动 24 小时或行条目才能看到第二天。
    
    

  2. 下面显示了
  3. 2023-08-31 08:00:00

    SlotDate
    SlotTime
    的小片段。
    
    

将 TIME 列转换为 DATETIME 列是可行的。
解决方案

将 TIME 列转换为 DATETIME。这将作为结果 DATETIME 的年、月、日分别为 1900、01 和 01。
sql-server reporting-services
1个回答
0
投票

我创建了一些简单的数据,包含 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
这是最终的设计和输出。

© www.soinside.com 2019 - 2024. All rights reserved.