2012-06-29 38 views
0

我正在SSRS中構建報表。遞增小時和天

在設計模式,它看起來像這樣:

enter image description here

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變成幾小時和幾天。

回答

3

您可以使用此Date.AddHours() - 只需創建一個新的日期這是任何一年的開始和使用

Date.AddHours(Fields!YourNumericField.Value) 

這樣,你得到滾動小時 - 你永遠也不會比192更多?什麼是最大範圍,因爲這會翻車的365你可以只混合和匹配,並做雖然喜歡的表達式:

=Math.Ceiling(Fields!YourNumericField.Value/24) & SomeDate.AddHours(Fields!YourNumericField.Value) 

類似的東西

我沒有這臺機器上SSRS雖則測試:P

編輯:

確定,所以讓你可以使用新的日期時間(年,月,日)

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:00 AM位的格式,檢查此引用:

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

「HH:mm」爲您提供24小時+分鐘例如23:54

「hh:mm tt」是例如12小時。 12:00 PM

有一齣戲

+0

這看起來很棒非常感謝!你能告訴我我可以在哪裏添加這些公式嗎? –

+0

如果您右鍵單擊單元格,您應該可以'編輯表達' - 您可以在SSRS中的任何位置鍵入任何表達式。你也可以在SSRS中使用很多.NET框架 - 所以創建一個日期使用System。DateTime VB的語法 - 我會更新我的答案 – Charleh

+0

這看起來很神奇即時嘗試實現它現在非常感謝您的幫助! –

1

這可以在基礎查詢很容易做到 - 不知道這樣做在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天,因爲它不會持續數月或數年。

+0

ken這真的太棒了!像魅力一樣工作!非常感謝!我現在仍在嘗試其他解決方案,因爲我更喜歡SSRS解決方案 –