SSRSでレポートを作成しています。
デザインモードでは、次のようになります。
tat2
値は 1 ~ 192 で、次のようにレポートに表示されます。
1
2
3
...
192
代わりに次のようなことを行う方法があるかどうかを知りたいです。
DAY 1 12:00AM
DAY 1 1:00AM
DAY 1 2:00AM
...
DAY 7 9:00PM
...
DAY 8 12:00AM
つまり、1 から 192 までの数字を時間と日に変換したいと思います。
SSRSでレポートを作成しています。
デザインモードでは、次のようになります。
tat2
値は 1 ~ 192 で、次のようにレポートに表示されます。
1
2
3
...
192
代わりに次のようなことを行う方法があるかどうかを知りたいです。
DAY 1 12:00AM
DAY 1 1:00AM
DAY 1 2:00AM
...
DAY 7 9:00PM
...
DAY 8 12:00AM
つまり、1 から 192 までの数字を時間と日に変換したいと思います。
これにはDate.AddHours()を使用できます-任意の年の始まりである新しい日付を作成して使用するだけです
Date.AddHours(Fields!YourNumericField.Value)
このようにして、ローリング時間を取得します-192を超えることはありますか?これは365でロールオーバーするため、最大範囲はどれくらいですか。次のように、組み合わせて一致させ、式を実行することができます。
=Math.Ceiling(Fields!YourNumericField.Value / 24) & SomeDate.AddHours(Fields!YourNumericField.Value)
そんな感じ
私はこのマシンにテストするSSRSを持っていません:P
編集:
さて、基準日を取得するには、新しいDateTime(年、月、日)を使用できます
http://msdn.microsoft.com/en-us/library/system.datetime.aspx
だから式
="DAY " & Math.Ceiling(Fields!tat2.Value / 24) & " " & format(new DateTime(2000, 1, 1).AddHours(Fields!tat2.Value), "hh:mm tt")
これは次のようになります。
DAY 1 10:45 AM
動作するはずです-午前10時のビットの形式を変更する場合は、次のリファレンスを確認してください。
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
「HH:mm」は24時間+分(例:23:54)を提供します
「hh:mmtt」は12時間です(例:12:00 PM)
遊びましょう
これは、基になるクエリで簡単に実行できます-SSRSで実行するかどうかはわかりません:
SELECT
Tat2 / 24 + 1 as Day,
CAST(Tat2 % 24 AS CHAR(2)) + ':00 ' +
CASE WHEN Tat2 % 24 > 12 then 'PM' else 'AM' end as AMPM
FROM YourTable
もちろん、これは 365 日を超えて処理することはできません。月や年ではないからです。