Все.
Попытка найти способ найти последний день текущего года в Netezza SQL. Для T-SQL я использовал SELECT DATEADD(MS,-3,DATEADD(YY, DATEDIFF(YY,0,GETDATE() )+1, 0))
, но у меня есть мозги, чтобы сделать его для NZ-SQL.
Спасибо!
Все.
Попытка найти способ найти последний день текущего года в Netezza SQL. Для T-SQL я использовал SELECT DATEADD(MS,-3,DATEADD(YY, DATEDIFF(YY,0,GETDATE() )+1, 0))
, но у меня есть мозги, чтобы сделать его для NZ-SQL.
Спасибо!
Следующее работает в 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)
Когда вы приводите строку, которая выглядит как год, к дате/времени, вы получаете первый день года.
И еще один, с использованием date_trunc, на всякий случай.
выберите date_trunc('год',текущая_дата) + интервал '1 год' - интервал '1 день';