首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PostgreSQL中更改一周的第一天

如何在PostgreSQL中更改一周的第一天
EN

Stack Overflow用户
提问于 2014-11-11 13:48:39
回答 2查看 7.4K关注 0票数 1

我需要在PostgreSQL中将一周的开始日期从星期一改为星期六。我尝试过SET DATEFIRST 6;,但它在PostgreSQL中不起作用。请对此提出解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-11 14:27:20

似乎DATEFIRST是Microsoft Transact-SQL中的一个东西。

我不相信Postgres有任何确切的等价物,但你应该能够近似它。

Postgres支持通过EXTRACT函数提取TIMESTAMP的各个部分。出于您的目的,您可能希望使用DOWISODOW

DOW的编号是星期天(0)到星期六(6),而符合ISO8601标准的ISODOW则是星期一(1)到星期天(7)。

Postgres doc

这一点:

代码语言:javascript
复制
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');

返回5,而如下所示:

代码语言:javascript
复制
SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');

返回7

因此,您可以在查询中使用某个版本的EXTRACT来获取星期几数字。如果你打算在很多查询中使用它,我会推荐creating a function,它会将查询集中在一个点上,并返回你想要的转置后的数字,这样它就从周六开始(转置会根据你在EXTRACT中使用的编号方法而有所不同)。然后,您可以简单地在任何SELECT中调用该函数,它将返回转置后的数字。

票数 8
EN

Stack Overflow用户

发布于 2018-06-07 23:50:17

您可以只添加+x,其中x是postgres dow和您想要实现的之间的偏移量。

例如:

您希望星期天是一周的第一天。2018-06-03是一个星期天,你想提取其中的道琼斯指数:

代码语言:javascript
复制
SELECT EXTRACT(DOW FROM DATE '2018-06-03')+1;

返回1

这可能是postgres道琼斯指数周日收益率为0的原因。那会是7点吗?

代码语言:javascript
复制
SELECT EXTRACT(DOW FROM DATE '2018-06-03')+1; 

将返回8

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26858406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档