我有数据sql语句,它使用some_date_to_compare > date('2011-05-05')
语法比较日期。日期当前在SQL语句中是硬编码的,我想更改它,将日期作为参数传递,如下所示:some_date_to_compare > date({?date_from})
。 date_from
是日期类型,而不是日期/小时。
问题是,当我尝试运行报告时,Crystal会按照以下格式YYYY-MM-DD hh:mm:ss
从输入参数框中传递日期,例如,如果我选择2011-05-05
作为日历中的日期我将2011-05-05 00:00:00
传递给date_from
参数。
有没有办法解决方法,或以我期望的格式传递日期(YYYY-MM-DD
)?
编辑(一些额外的信息):
我正在使用Informix并且该列是DATE类型(不是DATETIME - 日期+时间),因此它只是日期。
现在我的sql部分如下:
date_to_compare between date({?date_from}) AND date({?date_to})
,
所以我试图将表格中的列与日期范围进行比较。
然而问题是,当Crystal将输入参数框中的日期作为YYYY-MM-DD hh:mm:ss
传递时,查询验证的结果是: String to date conversion error:-1218 ,这是因为通过日期的时间部分。
顺便说一句,是否有可能在SQL命令修改窗口中关闭Crystal的查询验证?
答案 0 :(得分:1)
ToText()
功能可用于执行此操作。
ToText({datefield}, "yyyy-MM-dd")
答案 1 :(得分:1)
似乎是与连接类型相关的案例。之前我使用过简单的JDBC连接。现在,当我使用ODBC连接(Informix驱动程序)时,日期格式的问题就消失了。
答案 2 :(得分:1)
创建空白报告并将原始报告作为子报告插入。现在,在Main报表中,创建一个'Date'类型的静态参数。创建一个名为“Date_conv”的新公式并输入:
Datetime({?Date_parameter})
然后将子报表放在主报表上。右键单击子报表,然后选择“更改子传输链接”。选择公式并将其移至“链接到”区域。接下来,从左下角的下拉列表中选择子报表的datetime参数。报表现在应该提示“日期”而不是日期时间。参考网站 - http://scn.sap.com/thread/2085118