月初 select trunc(log_date, 'MONTH') from xxx;
月末 select last_day(log_date) from xxx;
週の初め(日曜日) select next_day(log_date, '日') -7 または、 select log_date - to_number(to_char(log_date, 'D')) + 1
週の終わり(土曜日) select next_day(log_date, '土')
四半期の初め: select add_months(trunc(log_date, 'MONTH'), -mod(to_number(to_char(log_date, 'MM')), 3))
月数 select months_between(to_date, from_date) from xxx; -> to_date - from_date (端数の日付は、小数表示(日数/31))
日数(引き算) select to_date - from_date from ...
年数(年齢) trunc((to_number(to_char(today, 'YYYYMMDD')) - to_number(to_char (birth_date, 'YYYYMMDD')) )/10000, 0) as age
例)
case when a.BIRTH_NENGO = 'S' then to_date(to_char(to_number(a.BIRTH_WAREKI) + 19250000), 'YYYYMMDD') when a.BIRTH_NENGO = 'H' then to_date(to_char(to_number(a.BIRTH_WAREKI) + 19880000), 'YYYYMMDD') when a.BIRTH_NENGO = 'T' then to_date(to_char(to_number(a.BIRTH_WAREKI) + 19110000), 'YYYYMMDD') when a.BIRTH_NENGO = 'M' then to_date(to_char(to_number(a.BIRTH_WAREKI) + 18670000), 'YYYYMMDD') else null end as birth_date,