簡體   English   中英

PostgreSQL:如何在SQL查詢中將date_trunc的星期開始日期從星期一更改為另一天?

[英]PostgreSQL: How change date_trunc week start day from monday to another day in sql query?

我想在PostgreSQL的datetime列上使用date_trunc函數來匯總一周內的數據。

例如,我需要獲取每周的銷售數量。

問題是date_trunc('week', datetime_column)函數將星期一視為星期開始日期,而我的某些客戶用戶在日歷中使用了不同的開始日期(例如星期六)。

我試過了

 SELECT date_trunc('WEEK',(time_id + interval '2 day'))- interval '2 day' AS WEEK

但這很麻煩,我認為必須有更好的方法。

試試這個

select
    datetime_column
    - extract(isodow from datetime_column) + 3  -- 3 is the weekday number to which we want to truncate
    - cast(extract(isodow from datetime_column) < 3 as int) * 7  -- 3 is the weekday number to which we want to truncate
from
    <table_name>

嘗試%(除法除法)

select i,
       now() + make_interval(days := i) "timestamp",
       extract(dow from now() + make_interval(days := i)) day_of_week,
       (extract(dow from now() + make_interval(days := i))::int+3)%7 day_of_week_shift
    from
        generate_series(0, 6) i

我需要一種更清潔,更輕松的方法來將tranc_date轉換為星期幾,但是考慮到提供的解決方案,我認為我的查詢現在是最好的解決方案。

我想我可以創建一個函數使其更具可讀性,但是我仍然想要一種方法來防止對每條記錄執行2次數學運算。

我將使代碼成為解決方案,但我很高興知道是否有一種方法可以使查詢更快。

 SELECT date_trunc('WEEK',(time_id + interval '2 day'))- interval '2 day' AS WEEK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM