Netezza Каков наилучший способ получить первый день месяца на свидание?
Select to_date(to_char(date_part('year',current_date),'0000') || trim(to_char(date_part('month',current_date),'00')) || '01','YYYYMMDD')
Пока что это лучшее, что я могу придумать.
Я также не могу найти исчерпывающую справку по языку Netezza SQL, в которой есть все функции, поэтому, пожалуйста, укажите источник в своем ответе.
1 ответ
Решение
Используйте date_trunc('month', current_ date), которая описана здесь.
Начнем с даты, для того, что мне нужно сегодня, использовалась текущая дата / месяц. Затем найдите последний день текущего месяца. Это внешняя оболочка первого дня как систематический вывод:
- начать с текущей даты
- используйте add_months (-1), чтобы вычесть месяц;
- найти последний день предыдущего месяца;
- добавить 1 день.
Затем я решил проверить февраль (високосный год и нормальный), найдя первое из первого, а затем добавив в поиск первого числа следующего месяца. Также проверял, глядя на месяц назад, начиная с 31-го и 30-го месяца. Я думаю, это должно быть гибким.
select current_date,
last_day(add_months(current_date,-1))+1 as firstdt_currmos,
last_day(current_date) as lastdt_currmos
;
select last_day(add_months('02-29-2016',-1))+1 as firstdt_febleap,
last_day(add_months('02-28-2019',-1))+1 as firstdt_febnorm,
last_day(add_months('07-01-2019',-1))+1 as firstdt_first,
last_day(add_months(current_date,-1))+1 as firstdt_currmos,
last_day(current_date)+1 as firstdt_nextmos,
last_day(add_months('07-31-2019',-1))+1 as firstdt_mos31st,
date(add_months('07-31-2019',-1)) as mosago_31st,
date(add_months('06-30-2019',-1)) as mosago_30th
;