Netezza 获取约会日期的最佳方式是什么?

Netezza What is the best way to get the first day of the month for a date?

Select to_date(to_char(date_part('year',current_date),'0000') || trim(to_char(date_part('month',current_date),'00')) || '01','YYYYMMDD')

到目前为止,这是我能想到的最好的。

我也找不到包含所有功能的 Netezza SQL 的综合语言参考,因此请在您的回答中包含来源。

使用date_trunc('month', current_date),即documented here

从日期开始,因为我今天需要的是当前 date/month。然后找到当月的最后一天。这是第一天的外shell作为系统输出:

  1. 从当前日期开始
  2. 用add_months(-1)减去一个月;
  3. 找到上个月的最后一天;
  4. 加 1 天。

然后我决定在 2 月(闰年和正常)进行测试,从第一个开始找到第一个,然后添加找到下个月的第一个。还检查了一个月前从 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

;