创建一个公式,将 1 个带日期的 varchar 字段和 1 个带时间的 varchar 字段转换为 1 个日期时间字段

科林

我有一个包含 2 个varchar字段的现有报告1 保存日期,2 保存时间。我需要创建一个连接两者的公式,然后使用该公式对报告进行排序。例子:

SCHEDULED_DATE             SCHEDULED_TIME
2018-04-26 00:00:00.000    1:00 PM
2018-04-26 00:00:00.000    NULL

我想将这两个字段加在一起然后排序。在 SQL 中,我可以执行以下操作,但在水晶报表中,它无法正确转换并引发错误。

ORDER BY Convert(Datetime, SCHEDULED_DATE + Convert(time,ISNULL(SCHEDULED_TIME, '00:00:00.000')))

这是我对水晶报表公式的尝试:

If IsNull ({Inspections.SCHEDULED_TIME})
Then CDateTime(CDATE({Inspections.SCHEDULED_DATE}) + Time('00:00:00.000'))
Else CDateTime(CDate({Inspections.SCHEDULED_DATE})+ CTime({Inspections.SCHEDULED_TIME}))

任何帮助将不胜感激。谢谢

垫雪

首先,日期和时间值不应该存储为文本。
更好地使用 DBMS 的适当数据类型。

然后在您的公式中看到多个问题:

  • CDate并且CDateTime不支持毫秒
  • Date并且Time值不能与+
  • SCHEDULED_DATE-column已经包含了时间部分,你(尝试)增加一个
  • 连接日期和时间部分时,用空格隔开

因此,您必须删除时间部分并连接列而不将它们转换为Dateor Time

If IsNull ({Inspections.SCHEDULED_TIME})
Then CDateTime(CDATE({Inspections.SCHEDULED_DATE}))
Else CDateTime(Left({Inspections.SCHEDULED_DATE},10)+" "+{Inspections.SCHEDULED_TIME})

注意:我完全删除了00:00:00.000“True”部分中的时间,因为无论如何当您将所有设置为零时都不需要它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档