我使用以下查询来获取当前的一周
select extract(week from current_timestamp)
它显示34
很好。
但我如何获得当月的当前周数。
答案 0 :(得分:17)
您可以通过以下方式找到本周的第一天:
trunc('week', current_date)
本月第一周的第一天:
trunc('week', date_trunc('month', current_date))
减去两个以找到月中的周数:
extract('day' from date_trunc('week', current_date) -
date_trunc('week', date_trunc('month', current_date))) / 7 + 1
答案 1 :(得分:4)
尝试以下
SELECT to_char('2016-05-01'::timestamp, 'W');
答案 2 :(得分:1)
您可以使用日期查找周数:
select ((date_part('day', current_date)::integer - 1) / 7) +1;
答案 3 :(得分:0)
我不确定这对postgreSql(http://www.w3cyberlearnings.com/PostgreSQL_DATE_PART)的工作原理如何 但在sql server中,这个例子是这样的......
>SELECT date_part('week', date)
答案 4 :(得分:0)
这将给出准确的结果
CREATE OR REPLACE FUNCTION week_no(date)
RETURNS integer AS
$BODY$
SELECT
CASE WHEN EXTRACT(DAY FROM $1::TIMESTAMP)::INTEGER = 1
THEN 1
ELSE extract(week from $1:: TIMESTAMP)::integer
- extract(week from ( date_trunc('month', $1::TIMESTAMP) + interval '1 day' ) )::integer + 1
END
$BODY$
LANGUAGE sql IMMUTABLE STRICT
COST 100;
示例: week_no(' 2017-01-01')= 1
答案 5 :(得分:0)
其中cast(call_start as Date)= Date'Woday'
或施放(call_start作为日期)=日期'今天'-1
或施放(call_start作为日期)=日期'今天'-2
或施放(call_start作为日期)=日期'今天'-3
或施放(call_start作为日期)=日期'今天'-4
或施放(call_start作为日期)=日期'今天'-5
或施放(call_start作为日期)=日期'今天'-6
或强制转换(call_start as Date)=日期'今天'-7
这给了我