私はSSRSレポートを作成しており、テーブルに時間ごとのデータ数を表示する必要があります。 時間間隔は、午後4時から午後5時まで表示する必要があります。 私は、各トランザクションでDateTimeを利用できるログテーブルを持っています。この表は毎日リフレッシュされます。 このタイムスタンプの時間コンポーネントをグループ化して、時間単位のカウントを取得しています。 時間単位の値を04:00 - 05:00の形式に変換するためのSQL/SSRSで使用できるオプションはありますか?T-SQLの時間間隔の日付時間
答えて
使用の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
コーナーケース(午後11時)の場合は、ネストされたケースステートメントを使用してAM/PMを扱います。 datepartをチェックし、結果に基づいてam/pmを返します。私はスマートフォンからこれを投稿しているので、クエリをテストすることができませんでした。
希望します。
動的オプションはありませんか? – viky
日時を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
出力例:
それでも分が分かります。分は00です。 – viky
更新されたスクリプトを使用してください。 –
私はあなたは、単にこの1のための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. MySQLの日時デフォルトの時間間隔
- 2. Swift 3 2つの日付間の時間間隔のエラー
- 3. 時間間隔
- 4. vbscriptでの時間間隔の時間
- 5. 間隔の間の日付時刻のリストを生成する
- 6. 時間間隔の日付グループの休止グループ
- 7. Postgres:日付時間間隔での統計関数
- 8. 時間間隔タスクサービス
- 9. 時間間隔のJavaScriptビジュアルタイムライングラフ
- 10. JPQLの時間間隔
- 11. ビデオの時間間隔
- 12. SQL Serverの時間間隔
- 13. SQLビュークエリで2つの日付間の時間間隔の計算が必要
- 14. 日付が発生する時間間隔を見つける
- 15. 時間間隔で日付インデックスを検索する
- 16. 2つの日付間の時間間隔はnilを返します
- 17. 2つの時間間隔の間にfriday日付を取得する方法
- 18. 2つの日付間の時間間隔を選択するSQL Oracle 11g
- 19. Java日付の減算時間 - 2時間の期間
- 20. R日付時間繁殖時間/時間
- 21. コマンド間の時間間隔esp8266
- 22. 入力日時から時間間隔をマークする方法
- 23. 整数時間間隔
- 24. セロリ間隔スケジュール時間
- 25. R時間間隔プロット
- 26. 間隔の日付間のクエリ
- 27. Oracle PL/SQLの日時演算間隔
- 28. Jquery日付の時間差
- 29. felicegattusoの日付ピッカーリセット時間
- 30. PHPの日付();時間
は、カウント、または列名を変換しますか?それは両方で実行可能ですが、私はあなたがSSRSでタブリックスのヘッダーを変更する方法を知っていると確信しています。少し詳しく説明できますか? – scsimon
私はRight(100 + datepart(時)、getdate())、2)を試しましたが、それは私に0から23の値を与えます – viky
そして、あなたが望む値にdatetimeを変換する方法はありませんか? – dfundako