簡體   English   中英

如何從沒有時區列的時間戳中提取時間?

[英]How to extract the time from a timestamp without timezone column?

我想計算每天每個時間間隔的訂單數量。

日期的格式是沒有時區的時間戳。 我似乎不能只提取時間。 我每天都使用這個查詢,但是有沒有辦法在一個表中包含一個月中每一天的時間間隔?

CASE WHEN date_created_utc >= timestamp '2020-09-01 08:00:00' AND date_created_utc <= timestamp '2020-09-01 11:00:00' THEN 'Q1'    
WHEN date_created_utc >= timestamp '2020-09-01 11:00:01' AND date_created_utc <= timestamp '2020-09-01 14:00:00' THEN 'Q2'    
WHEN date_created_utc >= timestamp '2020-09-01 14:00:01' AND date_created_utc <= timestamp '2020-09-01 16:00:00' THEN 'Q3'    
WHEN date_created_utc >= timestamp '2020-09-01 16:00:01' AND date_created_utc <= timestamp '2020-09-01 20:00:00' THEN 'Q4'    
WHEN date_created_utc >= timestamp '2020-09-01 20:00:01' AND date_created_utc <= timestamp '2020-09-01 23:59:00' THEN 'Q5'    
END AS interval,    
COUNT(id) as cnt    
FROM order_processing    
GROUP BY 1;

所需的輸出表:

Day Q1  Q2  Q3  Q4  Q5
1   28  57  50  65  27
2   23  50  60  90  66
3   58  60  80  70  67

您只需要小時部分來實現邏輯:您可以使用extract()

select
    date_created_utc::date day,
    count(*) filter(where extract(hour from date_created_utc) between 8 and 10) q1,
    count(*) filter(where extract(hour from date_created_utc) between 11 and 14) q2,
    ...
from order_processing
group by date_created_utc::date

您可以轉換為time ,然后使用比較。 對於聚合:

COUNT(*) FILTER (WHERE date_created_utc::time >= '08:00:00' and date_created_utc::time < '11:00:00') as cnt_1
   

暫無
暫無

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

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