Select DB2 日期格式为 YYYYMMDD 的最新记录

Select most recent records by DB2 date in form of YYYYMMDD

我正在将记录从 DB2 数据源导入 MS SQL 服务器目标。 记录的日期格式为 20150302/YYYYMMDD,但我只想要基于当前服务器日期的最近 14 天。

能否就如何根据此日期格式 DATEADD(d, - 1, { fn CURDATE() }) select 提出一些建议。

谢谢!

如果你想要 SQL 服务器中的逻辑,那么你很幸运,因为你可以将 YYYYMMDD 格式转换为日期:

where cast(datecol as date) >= cast(getdate() - 14 as date)

(假设没有未来的日期。)

如果要在 DB2 端执行此操作,可以使用 to_date():

where to_date(datecol, 'YYYYMMDD') >= current date - 14 days

最好在 DB2 端执行此操作,以减少带来的记录数。

此外,从性能的角度来看,最好将静态日期转换为数字日期并与 table 中的列进行比较。而不是将 table 中的数字日期转换为实际日期类型进行比较。

where numdate >= int(replace(char(current_date - 14 days,iso),'-',''))

这样做将使您能够利用 numdate 上的索引。此外,DB2 将只需要执行一次此转换。

根据您的平台和版本,您可能有更简单的方法将日期数据类型转换为数字日期。但以上内容适用于 DB2 for i,并且应该适用于大多数(所有?)DB2 版本和平台。

您可能会发现创建一个 UDF 来为您进行此转换是值得的。