2013-04-04 112 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