【问题标题】:Make date_trunc() start on Sunday instead of Monday使 date_trunc() 从星期日开始而不是星期一
【发布时间】:2021-09-30 00:11:48
【问题描述】:
Select date_trunc('week',dateTime) Date_week, Max(Ranking) Runing_Total_ID
    from (select datetime, id , dense_rank () over (order by datetime) as Ranking
          from Table1)
 group by 1

此查询对我有用,可以按周为我提供总 ID 的运行总数。但是默认情况下,一周在 Postgres 中从星期一开始。有什么办法可以把星期的开始改为星期天吗?

【问题讨论】:

    标签: postgresql datetime amazon-athena dbeaver


    【解决方案1】:

    来回移动时间戳:
    在将时间戳提供给date_trunc() 之前添加一天,然后再次减去:

    SELECT date_trunc('week', datetime + interval '1 day') - interval '1 day' AS date_week
         , max(ranking) AS runing_total_id
    FROM (
       SELECT datetime, dense_rank() OVER (ORDER BY datetime) AS ranking
       FROM   table1
       ) sub
    GROUP  BY 1;
    

    见:

    【讨论】:

    • 在使用“1”天而不是“1天”后工作
    • 像在 Postgres 中一样工作,相信我。或者不要,试试看。
    • 奇怪!我试过了,因为它没有用,但后来我把它改成了“1”天它工作了。我正在开发 Amazon Athena,Dbeaver。
    • @Ethan:Amazon Athena 不是 Postgres(根本不是!)。 Athena 只接受标准 SQL(或者它声称)。 Postgres 也允许像上面这样更合理的input syntax for intervals。硬核 SQL 标准语法是 interval '1 0:00:00' 或 interval '1 0:0' 表示“1 天”。
    • 哦!我认为它是presto。
    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多