验证了一波postgresql中between对于时间的开闭情况
大概的结论是左闭右开 [ ),但也有例外
select '2017-12-31 24:00:00' = '2018-01-01 00:00:00' False
select '2017-12-31 24:00:00' < '2018-01-01 00:00:00' True
select '2017-01-01' between '2017-01-01' and '2018-01-01' True
select '2018-01-01' between '2017-01-01' and '2018-01-01' True
select '2017-12-31 24:00:00' between '2017-01-01' and '2018-01-01' True
select '2018-01-01 00:00:00' between '2017-01-01' and '2018-01-01' False
select '2018-01-01 00:00:00' between '2017-01-01 00:00:00' and '2018-01-01 00:00:00' True
根据两个日期,生成之间的日期
select to_date(to_char(generate_series('2014-01-01'::date,'2014-02-02', '1 days'),'yyyy-mm-dd'),'yyyy-mm-dd')::date
两个日期之间的天数(包括两头的日期,所以+1)
select extract(day from(age(to_date('2014-01-02','yyyy-mm-dd'),to_date('2014-01-01','yyyy-mm-dd'))))+1
网友评论