2015-05-07 4 views
0

Я импортирую записи из источника данных DB2 в место назначения MS SQL Server. Записи поступают с форматом даты 20150302/YYYYMMDD, но я хочу только последние 14 дней на основе текущей даты сервера.Выберите самые последние записи по дате DB2 в форме YYYYMMDD

Можете ли вы посоветовать, как выбрать на основе этого формата даты, начиная с DATEADD(d, - 1, { fn CURDATE() }).

Спасибо!

ответ

0

было бы лучше сделать это на стороне DB2, чтобы уменьшить количество записей, привезенных.

Кроме того, с точки зрения производительности лучше преобразовать статическую дату в числовую дату и сравнить ее с столбцом в таблице. Вместо того, чтобы преобразовать числовую дату в вашей таблице в фактический тип даты для сравнения.

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

Выполнение этого способа позволит вам использовать индекс над numdate. Кроме того, DB2 необходимо будет выполнить однократное преобразование.

В зависимости от вашей платформы &, у вас может быть более простой способ преобразования из типа данных даты в числовую дату. Но выше работает в DB2 for i и должно работать на большинстве (всех?) Версий и платформ DB2.

Возможно, вам стоит создать UDF, чтобы сделать это преобразование для вас.

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 
Смежные вопросы