Crystal reports Crystal reports中SQL参数字段中的日期转换 我有一个水晶报表(版本席R3),它使用SQL命令对象来检索它的数据。在命令对象中,我有一个日期参数。我的数据库使用以YYYYMMDD格式存储为数值的“日期”字段,因此我将参数指定为数值,并添加了一个提示,提示“以YYYYMMDD格式输入日期”

Crystal reports Crystal reports中SQL参数字段中的日期转换 我有一个水晶报表(版本席R3),它使用SQL命令对象来检索它的数据。在命令对象中,我有一个日期参数。我的数据库使用以YYYYMMDD格式存储为数值的“日期”字段,因此我将参数指定为数值,并添加了一个提示,提示“以YYYYMMDD格式输入日期”,crystal-reports,crystal-reports-xi,Crystal Reports,Crystal Reports Xi,我的用户不太在意这一点;他们希望能够使用日期选择器和/或能够以MM/DD/YYYY格式输入日期 到目前为止,我的调查使我相信,如果我将参数转换为真实的日期数据类型,我将无法在SQL命令对象中使用它,因为我无法在SQL语句中将其从日期转换为数字,因此我必须在Crystal Select向导中而不是在SQL语句中进行日期范围控制,这可能会使我的报告速度降低一两个数量级(因为我正在访问一个由这个日期字段索引的表,并且每天有很多记录) 我错了吗?有没有一种方法可以让用户以MM/DD/YYYY格式输入日期

我的用户不太在意这一点;他们希望能够使用日期选择器和/或能够以MM/DD/YYYY格式输入日期

到目前为止,我的调查使我相信,如果我将参数转换为真实的日期数据类型,我将无法在SQL命令对象中使用它,因为我无法在SQL语句中将其从日期转换为数字,因此我必须在Crystal Select向导中而不是在SQL语句中进行日期范围控制,这可能会使我的报告速度降低一两个数量级(因为我正在访问一个由这个日期字段索引的表,并且每天有很多记录)


我错了吗?有没有一种方法可以让用户以MM/DD/YYYY格式输入日期,并且仍然能够在我的SQL命令对象中将其用作数字YYYYMMDD参数?

恐怕您必须修改原始命令的,以将数字参数替换为日期参数,并在命令本身中执行从日期到数字的转换

因此,在命令中:

WHERE MyDate = {?MyNumberParam)
将成为:

WHERE MyDate = (YEAR({?MyDateParam})*10000) + (MONTH({?MyDateParam})*100) + DAY({?MyDateParam})

最后一部分将2012年4月20日转换为(2012*10000+4*100+20)=20120420,我相信这就是您想要的。

为什么不能在SQL语句中从日期转换为数字?你在用什么数据库?谢谢你,好心的先生。我不知道从哪里得到的印象是,我不能在Crystal日期参数字段上使用SQL日期转换函数,但这种误解显然是我进退两难的根源。