+ -
当前位置:首页 → 问答吧 → PostgreSQL怎么在查询时,得到时间对应周的周一日期。

PostgreSQL怎么在查询时,得到时间对应周的周一日期。

时间:2011-11-14

来源:互联网

举个例子,
MySQL可以这样:date_format(ADDDATE(a_time,-1*WEEKDAY(a_time)),'%Y-%m-%d')

Postgre可以用date '2001-09-28' + interval '-1 days' 前进或后天若干天,但是我把'1 days' 换成'-1'||to_char(a_time,'D')||' days'这样的语句就不行了,好像这里不支持动态的表达式啊。

求高手帮帮忙,谢谢了!

作者: herogxooo   发布时间: 2011-11-14

要动态执行,PS9以上
DO $$
declare d int;
declare d1 varchar(100);
declare d2 varchar(100);
declare d3 date;
declare d4 date;
begin
d3:=date '2011-11-14';
d1:='select date'''|| d3 ||'''';
d:=(SELECT EXTRACT(DOW FROM d3))-1;
d2:=d1 || '-INTERVAL ''' || d || ' day '' ';
EXECUTE d2 into d4;
RAISE NOTICE 'ok %',d4;
end$$

作者: wwwwb   发布时间: 2011-11-14

没办法,PSQL中的格式是 date '2001-09-28' + interval -1 days ,没有那个引号。你可以直接把你的函数代入

+ interval -to_number(to_char(a_time,'D')_ days

作者: ACMAIN_CHM   发布时间: 2011-11-14

相关阅读 更多