Поле даты не соответствует расчету - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь рассчитать возрастной диапазон на основе даты рождения Клиента. Данные для этого источника поступают в стадию, где я вызываю следующую хранимую процедуру. Размер пакета обычно составляет от 500 КБ до 2 М.

 CREATE PROCEDURE [spCustomer_UpdateStageAgeRange]
 AS
 BEGIN
    DECLARE @Today date = getdate()

    update stg.tCustomer_Merge set [CALC_Age_Range] = 
        CASE 
            WHEN datediff(Year, CAST([DOB] AS date), @Today) < 13 THEN '<13'
            WHEN datediff(Year, CAST([DOB] AS date), @Today) < 18 THEN '13-17'
            WHEN datediff(Year, CAST([DOB] AS date), @Today) < 22 THEN '18-21'
            WHEN datediff(Year, CAST([DOB] AS date), @Today) < 26 THEN '22-25'
            WHEN datediff(Year, CAST([DOB] AS date), @Today) < 34 THEN '26-33'
            WHEN datediff(Year, CAST([DOB] AS date), @Today) < 45 THEN '34-44'
            WHEN datediff(Year, CAST([DOB] AS date), @Today) >= 45 THEN '45+'
            ELSE 'Unknown'
        END
End

Проблема : даже для некоторого действительного DOB эта хранимая процедура вычисляет возрастной диапазон как «Неизвестный». Мы не можем повторно сгенерировать это для меньшего набора данных, так что это проблема большого объема? Или по какой-либо другой причине?

Контекст : В 28M записях 230K имеют «Неизвестный»

Примечание: Мы используем Azure - sql -сервер. DOB - это поле даты в таблице stg.tCustomer_Merge. Ручные прогоны DOB работают, мы видим эту проблему только большими партиями.

...