【问题标题】:date conversion in SQL parameter field in Crystal reportsCrystal 报表中 SQL 参数字段中的日期转换
【发布时间】:2012-04-20 15:30:29
【问题描述】:

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

我的用户不太关心这个;他们希望能够使用日期选择器和/或能够以 MM/DD/YYYY 格式输入日期。

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

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

【问题讨论】:

  • 为什么不能在SQL语句中将日期转换为数字?你用的是什么数据库?

标签: crystal-reports crystal-reports-xi


【解决方案1】:

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

所以,在命令中:

WHERE MyDate = {?MyNumberParam)

会变成:

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

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

【讨论】:

  • 谢谢您,先生。我不知道我从哪里得到的印象是我不能在 Crystal 日期参数字段上使用 SQL 日期转换函数,但这种误解显然是我进退两难的根源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多