按日期以YYYYMMDD的形式选择最新记录

时间:2015-05-07 09:59:33

标签: sql db2

我将记录从DB2数据源导入MS SQL Server目标。 这些记录的日期格式为20150302/YYYYMMDD,但我只想根据当前服务器日期过去14天。

有人可以根据DATEADD(d, - 1, { fn CURDATE() })对这个日期格式进行选择。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您想在SQL Server中使用逻辑,那么您很幸运,因为您只需将YYYYMMDD格式转换为日期:

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

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

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

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

答案 1 :(得分:0)

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

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

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

以这种方式执行此操作将允许您利用numdate上的索引。此外,DB2只需要执行一次此转换。

取决于您的平台和&版本,您可以更轻松地从日期数据类型转换为数字日期。但是上面的内容适用于DB2 for i,并且应该适用于大多数(所有?)DB2版本和平台。

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