我将记录从DB2数据源导入MS SQL Server目标。
这些记录的日期格式为20150302/YYYYMMDD
,但我只想根据当前服务器日期过去14天。
有人可以根据DATEADD(d, - 1, { fn CURDATE() })
对这个日期格式进行选择。
谢谢!
答案 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来为您进行此转换是值得的。