NZ-SQL Изберете последния ден от текущата година

Всичко.

Опитвам се да намеря начин да намеря последния ден от текущата година в Netezza SQL. За T-SQL използвах SELECT DATEADD(MS,-3,DATEADD(YY, DATEDIFF(YY,0,GETDATE() )+1, 0)), но имам проблеми с правенето на такъв за NZ-SQL

Благодаря!


person cryocaustik    schedule 15.11.2014    source източник


Отговори (2)


Следното работи в Postgres, така че подозирам, че трябва да работи и в Netezza:

select current_date - extract(doy from current_date) * interval '1 day' + interval '1 year'

Идеята е да извадите текущия ден от годината от текущата дата. Това ви дава последния ден от предходната година. След това добавете интервал от една година.

РЕДАКТИРАНЕ:

Ето същата идея, но различно изпълнение:

select add_months(current_date - extract(doy from current_date), 12) 

Или в отчаяние

select to_date(cast(extract(year from current_date)*100000 + 1231) as varchar(255)), 'YYYYMMDD')

РЕДАКТИРАНЕ II:

Между другото, в SQL Server можете да използвате този израз:

select dateadd(year, 1, cast(datename(year, getdate()) as datetime) - 1)

Когато прехвърляте низ, който изглежда като година към дата/час, получавате първия ден от годината.

person Gordon Linoff    schedule 15.11.2014
comment
За съжаление, когато стартирам вашия код, получавам това: ГРЕШКА [42S22] ГРЕШКА: Атрибутът „ИНТЕРВАЛ“ не е намерен - person cryocaustik; 15.11.2014
comment
Това свърши работа: изберете add_months(current_date - extract(doy from current_date), 12) Благодаря ви!!! Вероятно точно петък вечерта е заседнала в мозъка ми. Ще се опитам да разбера останалото по-късно. Благодаря отново! - person cryocaustik; 15.11.2014

И още един, използвайки date_trunc, просто за добра мярка.

изберете date_trunc('year',current_date) + интервал '1 година' - интервал '1 ден';

person ScottMcG    schedule 15.11.2014
comment
БЛАГОДАРЯ ТИ! Това ми помогна да разреша друг проблем (последния ден от предишния месец с помощта на -3 милисекунди) - person cryocaustik; 17.11.2014