2013-04-04 113 views
0

我是一個水晶報告的新手,我有一個水晶報告,我有一個數據源,我正在使用該報告的一些字段。水晶報告:錯誤的日期格式字符串錯誤

Crsytal報告名稱:InventoryReport

數據來源:我給存儲過程 - GetInventoryData

領域:項ID,發貨日期,ITEMNAME

我得被運之間的所有項目從發貨日期的FromData和ToDate,所以我在{?FromDate}到{?ToDate}使用公式{GetInventoryData; 1.ShippedDate}

發貨日期的數據類型是字符串,我必須轉換爲日期,因爲它需要t Ø進行比較,但我在這有問題......

發貨日期值將是:2011-04-19 16:02:14.0000000

我不得不在只有水晶報表轉換一側..

請幫助我,我怎麼能轉換爲日期

+0

我認爲這[如何字符串值正確的日期時間轉換格式] [1]可能會幫助你解釋 [1]:http://stackoverflow.com/questions/9545744/how-to-convert-string-value-to-proper-datetime-format – sagar 2013-04-04 14:37:19

回答

0

如果使用字符串,你可以做一個簡單的低於或高於這樣的:

...where ShippedDate >= '2011-04-19 00:00:00' and ShippedDate <= '2011-04-19 23:59:59' 

這是這樣的:

...where ShippedDate >= '<from-date> 00:00:00' and ShippedDate <= '<to-date> 23:59:59' 

這將工作,你不必投到日期。

您也可以使用如(如果你的作品):

...where ShippedDate >= '<from-date>' and ShippedDate <= '<to-date>' 
+0

您好..我必須在晶體報告轉換隻有一方..因爲我沒有權限修改程序......因爲它們正在用於各種其他應用程序中。 – msbyuva 2013-04-04 14:39:52

0

一種方式......創建一個名爲cvtDate

date(
tonumber(split({GetInventoryData;1.ShippedDate},"-")[1]) 
, 
tonumber(split({GetInventoryData;1.ShippedDate},"-")[2]) 
, 
tonumber(split({GetInventoryData;1.ShippedDate},"-")[3]) 
) 

然後,而不是創建兩個日期參數,公式..創建只有一個被稱爲日期範圍,允許範圍值低於值選項 然後選擇公式將是

{@cvtDate} in {?daterange} 
1

實際上更好的使用日期範圍內不使用這個公式....在選擇公式上面

date(split({GetInventoryData;1.ShippedDate}," ")[1]) in {?daterange} 
+2

Protip:在記錄sel中使用Crystal函數,如'split()' ection公式將導致選擇發生在客戶端與服務器端。這意味着不管日期如何,所有記錄都將從數據庫中返回,這可能會導致性能下降。對於大型數據集,最好在數據庫本地語法中使用SQL表達式來執行數據操作。 – Ryan 2013-04-04 15:33:30

+0

完全同意,如果性能受建議的解決方案影響,SQL表達式將會是一個更好的解決方案。由於語法問題,我想我回避提供SQL示例。在我的SQL風格中,如果他感興趣TO_DATE({fn LEFT(ShippedDate,10)},'YYYY-MM-DD')作爲cvtShipDate – CoSpringsGuy 2013-04-04 16:17:30

+0

在我的情況下,不能在SQL表達式中做任何更改,因爲我不能修改存儲過程..我只能在水晶報表方面..順便請你能幫我如何創建日期範圍參數我是全新的水晶報表... – msbyuva 2013-04-04 16:23:18