我有一个字符串字段,其中日期有时输入为 YYYY-MM-DD,并在 Crystal Report 上显示为日期。我正在使用
DateValue ({Table.Field})
显示日期,然后将日期格式化为 MM/DD/YYYY。这看起来不错,直到我看到 1931 年 10 月 12 日的日期并且发现它与数据库中的内容不匹配:“0010-12-31”。
我知道这只是一个错字,我可以看到日期可能应该是 2010 年 12 月 31 日,但我想显示他们输入的内容。所以,就在这一次,我输入了以下内容:
if {Table.Field} = '0010-12-31' then
Date(0010, 12, 31)
else
DateValue ({Table.Field})
当我这样做时,它显示 12/31/10,即使我已请求 4 位数年份。我想我对此很满意,因为它没有那么具有欺骗性。
但是,Crystal 应该如何处理看似很旧的日期呢?
而且,更重要的是,如果日期以不同的格式输入,这是否会令人窒息?我认为会的。
if NOT (IsNull({Table.Field})) then
Date(ToNumber (Left ({Table.Field}, 4)),
ToNumber (Mid ({Table.Field}, 6, 2)),
ToNumber (Right ({Table.Field}, 2))
)
这确实是一个问题:
在 1) 错误地显示错误日期或 2) 如果自由格式的字符串日期格式不同时报告窒息,是否有第 3 个(和更好的)选项?