将yyyymmdd转换为日期以进行记录选择

时间:2014-12-31 19:10:43

标签: date crystal-reports

我是一名在SQL命令方面经验有限的Crystal新手。

这是我的问题。

我的数据库以yyyymmdd数字格式存储日期。我创建了一个日期范围参数字段,以允许用户选择日期范围。当我尝试将{?date Range}添加到记录选择中时,我收到一条错误消息,其中显示"此处需要数字范围",显然是因为我的{?date Range}字段正在查找日期而不是一个数字。我相信我要做的就是将日期转换为日期格式,但我不知道如何做到这一点。

有人可以告诉我如何使这项工作?

非常感谢,谢谢

3 个答案:

答案 0 :(得分:0)

我没有使用Crystal来检查语法,但通常需要将日期范围转换为数值并在记录选择公式中使用theese值

TO值将是 tonumber(totext(最大({ParameterDateRange?}),' YYYYMMDD'))

FROM值将是 tonumber(totext(最小值({?ParameterDateRange}),' yyyyMMdd'))

因此公式可能类似于

{YourField} IN tonumber(totext(Minimum ({?DateRange}),'yyyyMMdd'))  TO tonumber(totext(Maximum({?DateRange}),'yyyyMMdd'))

你也可以使用<和>而不是

之间

答案 1 :(得分:0)

您可以使用CDate函数将数字转换为日期。

CDate(ToNumber(Mid(ToText(20141231),1,4)),ToNumber(Mid(ToText(20141231),5,2)),ToNumber(Mid(ToText(20141231),7,2)))

检查文档链接

http://www-01.ibm.com/support/knowledgecenter/SS4JCV_7.5.5/com.businessobjects.integration.eclipse.designer.doc/html/topic728.html

答案 2 :(得分:0)

尝试:

{table.date} IN ToText(Minimum({?DateRange}),"yyyymmdd") TO ToText(Maximum({?DateRange}),"yyyymmdd")