我需要在PostgreSQL中将一周的开始日期从星期一改为星期六。我尝试过SET DATEFIRST 6;
,但它在PostgreSQL中不起作用。请对此提出解决方案。
发布于 2014-11-11 14:27:20
似乎DATEFIRST
是Microsoft Transact-SQL中的一个东西。
我不相信Postgres有任何确切的等价物,但你应该能够近似它。
Postgres支持通过EXTRACT
函数提取TIMESTAMP
的各个部分。出于您的目的,您可能希望使用DOW
或ISODOW
。
DOW
的编号是星期天(0)到星期六(6),而符合ISO8601标准的ISODOW
则是星期一(1)到星期天(7)。
这一点:
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
返回5
,而如下所示:
SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');
返回7
。
因此,您可以在查询中使用某个版本的EXTRACT
来获取星期几数字。如果你打算在很多查询中使用它,我会推荐creating a function,它会将查询集中在一个点上,并返回你想要的转置后的数字,这样它就从周六开始(转置会根据你在EXTRACT
中使用的编号方法而有所不同)。然后,您可以简单地在任何SELECT
中调用该函数,它将返回转置后的数字。
发布于 2018-06-07 23:50:17
您可以只添加+x,其中x是postgres dow和您想要实现的之间的偏移量。
例如:
您希望星期天是一周的第一天。2018-06-03是一个星期天,你想提取其中的道琼斯指数:
SELECT EXTRACT(DOW FROM DATE '2018-06-03')+1;
返回1
这可能是postgres道琼斯指数周日收益率为0的原因。那会是7点吗?
SELECT EXTRACT(DOW FROM DATE '2018-06-03')+1;
将返回8
。
https://stackoverflow.com/questions/26858406
复制相似问题