首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从两个时间戳创建PostgreSQL‘`tsrange`’

从两个时间戳创建PostgreSQL‘`tsrange`’
EN

Stack Overflow用户
提问于 2015-11-06 11:45:02
回答 1查看 11.2K关注 0票数 8

我试图在postgresql查询中创建一个tsrange (上周四到前一个星期四),但我得到了强制转换错误。

这就是我到目前为止得到的(从this SO question开始)。

代码语言:javascript
运行
复制
WITH past_week AS (
    SELECT date_trunc('day', NOW() + (s::TEXT || ' day')::INTERVAL)::TIMESTAMP(0) AS day 
    FROM generate_series(-7, 0, 1) AS s)
SELECT (
date_trunc('day', (SELECT day FROM past_week WHERE EXTRACT(DOW FROM day) = '4') - '7 day'::INTERVAL),
date_trunc('day', (SELECT day FROM past_week WHERE EXTRACT(DOW FROM day) = '4')));

这是结果(正确的值,但不是格式,因为它不是一个范围):

代码语言:javascript
运行
复制
                      row                      
-----------------------------------------------
 ("2015-10-29 00:00:00","2015-11-05 00:00:00")
(1 row)

现在,有两件主要的事情困扰着我:

  1. 如果我试图在查询结束之前添加一个::tsrange,解释器会抱怨: 错误:不能将类型记录转换为tsrange第6行:...ROM past_week,其中提取( day) =‘4’))::tsrange;
  2. 我希望避免重复,但我不太精通SQL,不知道如何做到这一点。任何改进都是值得欢迎的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 12:05:57

使用 constructor

代码语言:javascript
运行
复制
WITH past_week AS (
    SELECT date_trunc('day', NOW() + (s::TEXT || ' day')::INTERVAL)::TIMESTAMP(0) AS day 
    FROM generate_series(-7, 0, 1) AS s)
SELECT tsrange(
    date_trunc('day', 
        (SELECT day FROM past_week 
        WHERE EXTRACT(DOW FROM day) = '4') - '7 day'::INTERVAL),
    date_trunc('day', 
        (SELECT day FROM past_week 
        WHERE EXTRACT(DOW FROM day) = '4')));

                    tsrange                    
-----------------------------------------------
 ["2015-10-29 00:00:00","2015-11-05 00:00:00")
(1 row)

使用CURRENT_DATE查询可能非常简单,如:

代码语言:javascript
运行
复制
WITH previous_thursday AS (
    SELECT CURRENT_DATE- EXTRACT(DOW FROM CURRENT_DATE)::int+ 4 AS thursday
    )
SELECT tsrange(thursday- '7d'::INTERVAL, thursday)
FROM previous_thursday;
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33566087

复制
相关文章

相似问题

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