В момента съм зает с малко SQL (както в Netezza, така и в HiveQL). Нашата компания често използва цифрови полета за дати (напр. 20150602 за дата, 20160400 за месец).
Трябва да добавя 6 месеца към една от тези дати и обикновено бих направил:
cast(to_char(add_months(to_date(A.date,'yyyyMMdd'),6),'yyyyMMdd') as int)
Въпреки че това не е красиво, работи и не знам по-кратък или по-добър начин. Основният ми проблем е, че това е голяма таблица (12 милиарда реда) и преобразуването на дата не е точно бързо, а заявката, върху която работя, се убива поради твърде дълга работа. Има ли по-добър начин да направите това?
SELECT DATEADD(M,6,'20160602')
резултат2016-12-02 00:00:00.000
- person Jacob H   schedule 31.08.2017