2014-09-19 151 views
0

我一直在线查找公式以将显示为日期的文本字段转换为真实日期或数字字段。该字段的值介于2014年9月19日,9月9日和9月19日之间。我很遗憾没有直接访问这些值所在的数据库,因为我只是在那里格式化它们。将日期文本字段设置为数字日期字段

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

谢谢

为了增加注释下这是我迄今所做的。

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

我也曾尝试

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

其返回值01/16/5272为价值5272016.

+0

请发布您到目前为止尝试过的代码。 – Ryan 2014-09-19 20:23:36

+0

嗨瑞安我添加了我采取的步骤上面的原始帖子。 – tcoady 2014-09-19 21:01:57

回答

0

坏消息是,除了采摘的日期字符串的碎片和创建一个实际在他们的日期并不完全微不足道。您首先必须将字符串拆分为绕“/”字符旋转的三个新字符串,将每个字符串转换为数字,然后将每个字符串作为单独参数传递给Date()函数。

好消息是,CR已经为您处理这个问题,Date()函数被重载到接受单个字符串参数。它接受一个不同长度的日期字符串,只要它格式正确并且与当地的日期格式相匹配,out将会弹出日期时间值。所以Date("1/17/14")将工作以及Date("01/17/2014")

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

+0

非常感谢,感谢您的帮助。 – tcoady 2014-09-22 13:12:27

相关问题