有没有办法在格式YYYY-MM-DD
格式中使用日期提取?这个月有多少天?
示例:
对于2016-02-05
,它会给29
(2016年2月有29天)
对于2016-03-12
,它会提供31
2015-02-05
它会给28
(2015年2月有28天)
我正在使用PostgreSQL
修改
LAST_DAY function in postgres不是我想要的。它返回DATE,而我期望一个整数
答案 0 :(得分:2)
实现这一目标的一种方法是从当月开始减去下个月的开头:
db=> SELECT DATE_TRUNC('MONTH', '2016-02-05'::DATE + INTERVAL '1 MONTH') -
DATE_TRUNC('MONTH', '2016-02-05'::DATE);
?column?
----------
29 days
(1 row)
答案 1 :(得分:0)
您可以尝试下一步:
SELECT
DATE_PART('days',
DATE_TRUNC('month', TO_DATE('2016-02-05', 'YYYY-MM-DD'))
+ '1 MONTH'::INTERVAL
- DATE_TRUNC('month', TO_DATE('2016-02-05', 'YYYY-MM-DD'))
);
注意:日期使用两次。并使用转换函数TO_DATE
答案 2 :(得分:0)
今天只需要这个,似乎我想出的和Mureinik差不多,只是我需要数字。 (PostgreSQL无法直接从间隔转换为数字)
上个月:
select CAST(to_char(date_trunc('month', current_date) - (date_trunc('month', current_date) - interval '1 month'),'dd') as integer)
当月:
select CAST(to_char(date_trunc('month', current_date) + interval '1 month' - date_trunc('month', current_date), 'dd') as integer)