我有一個表列transaction_timestamp將時間戳存盤為具有納秒解析度的紀元。
如何按天分組和/或計數?我想我必須先將納秒時間戳轉換為毫秒。我怎樣才能做到這一點?
我試過了:
SELECT DATE_TRUNC('day', CAST((transaction_timestamp /pow(10,6))as bigint)), COUNT(*)
FROM transaction
GROUP BY DATE_TRUNC('day', transaction_timestamp)
這是行不通的:
error: function date_trunc(unknown, bigint) does not exist
我也試過這個:
SELECT DATE_TRUNC('day', to_timestamp(transaction_timestamp / 1000000000.0)),
COUNT(*)
FROM transaction
GROUP BY DATE_TRUNC('day', transaction_timestamp)
uj5u.com熱心網友回復:
按照此處的說明進行基本轉換:
- 這可以是什么樣的日期風格?
在 中重復相同的運算式GROUP BY,或使用簡單的位置參考,例如:
SELECT date_trunc('day', to_timestamp(transaction_timestamp / 1000000000.0))
, count(*)
FROM transaction
GROUP BY 1;
請注意,to_timestamp()假定給定紀元的UTC時區會生成timestamp with time zone( timestamptz)。然后,以下date_trunc()使用timezone當前會話的設定來確定截斷“天”的位置。您可能想要明確定義某個時區...
基礎知識:
- 在 Rails 和 PostgreSQL 中完全忽略時區
通常,最好從適當timestamptz的開始。不幸的是,Postgres 時間戳只提供微秒級的解析度。由于您需要納秒,因此您的方法似乎是合理的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/441827.html
標籤:sql PostgreSQL 时间戳 时代
上一篇:將復雜字串轉換為日期
下一篇:檢查shell腳本中的存盤程序
