日期文本字段到数字日期字段

时间:2014-09-19 17:38:33

标签: date text crystal-reports formula crystal-reports-xi

我一直在网上寻找一个公式,将显示为日期的文本字段转换为真实的日期或数字字段。该字段包含的值介于09/19/2014,9 / 19/14甚至9/19/14之间。遗憾的是,我没有直接访问这些值所在的数据库,因为我只是在那里格式化它们。

我需要转换此字段的原因是因为我必须编写一个晶体报告,该报告可以在数据范围参数中使用此字段中的值。有没有办法使用公式转换这些不一致的值?我试图使用各种ToNumber公式进行转换,但我认为它遇到了麻烦,因为该字段与输入文本的方式不一致。

谢谢

要添加到下面的评论中,这是我到目前为止所做的。

首先,我创建了一个公式,使用Replace({V_GUIDESHEET.ITEM_COMMENT},"/","")从字段中删除斜杠。然后我创建了另一个公式,将该字段转换为数字Right("0"&{@ReplaceSlash},8)。所以现在我留下的公式字段是一个数字字段,其值看起来像05272016或0692016,我想表现得像05/27/2016或2016年6月6日但关键是我需要这个新的公式字段来思考并且像日期字段一样,以便我可以创建日期范围参数。用户打开报告时需要键入日期范围,以显示在特定范围内到期的许可证。

我也试过

Mid (ToText ({@ExpirationNumber}, "#", 0), 5,2) 
 + "/" + Right ( ToText({@ExpirationNumber}, "#", 0),2) 
 + "/" + Left (ToText ({@ExpirationNumber}, "#", 0), 4)

返回值01/16/5272,值为5272016。

1 个答案:

答案 0 :(得分:0)

坏消息是,将日期字符串分开并从中创建实际日期并非完全无关紧要。您首先必须将字符串拆分为三个围绕' /'旋转的新字符串。字符,将每个部分转换为数字,然后将每个作为单独的参数传递到Date()函数。

好消息是CR已经为您解决了这个问题,因为Date()函数已经重载到接受单个字符串参数。它接受不同长度的日期字符串,只要它格式正确并与您的本地日期格式匹配,out将弹出日期时间值。因此Date("1/17/14")Date("01/17/2014")一样有效。

解决此类问题的第一步是检查文档,确保您了解可用的功能以及它们的功能。例如,Right()函数不会将字符串转换为您所说的数字,如果您尝试使用该方法继续前进,可能会让您更加头疼