我需要以毫秒為單位計算兩個時間戳的差異。這是我采取的方法:
-- calculate the differenz of two timestamps in milliseconds
DO $$
declare _t1 timestamp;
declare _t2 timestamp;
declare _extract_ms double precision;
BEGIN
_t1 = now();
_t2 = (_t1 - INTERVAL '1 HOUR');
-- _extract_ms = EXTRACT(EPOCH FROM TIMESTAMP _t1::timestamp) - EXTRACT(EPOCH FROM TIMESTAMP _t2::timestamp); -- UNCOMMENT 01
-- _extract_ms = EXTRACT(EPOCH FROM date_trunc('milliseconds', _t1)) - EXTRACT(EPOCH FROM date_trunc('milliseconds', _t2)); -- UNCOMMENT 02
RAISE NOTICE '_t1=% _t2=% _extract_ms=%', _t1, _t2, _extract_ms;
END;
$$ LANGUAGE plpgsql;
0 - 如前所示執行代碼,產生以下輸出:
HINT: _t1=2022-02-22 14:14:59.627456 _t2=2022-02-22 13:14:59.627456 _extract_ms=<NULL>
1 - 現在取消注釋標記為“UNCOMMENT 01”的行并再次執行代碼以結束:
ERROR: Syntax error at ?_t1?
LINE 9: _extract_ms = EXTRACT(EPOCH FROM TIMESTAMP _t1::timestamp...
2 - 現在再次標記為“UNCOMMENT 01”的注釋行和標記為“UNCOMMENT 02”的注釋行并再次執行:
HINT: _t1=2022-02-22 14:28:43.161478 _t2=2022-02-22 13:28:43.161478 _extract_ms=3600
這是預期的結果!
如果我只是跑步,
select EXTRACT(EPOCH FROM TIMESTAMP now());
我會得到
ERROR: Syntax error at ?now?
LINE 1: select EXTRACT(EPOCH FROM TIMESTAMP now());
我絆倒了pgplsql: SELECT EXTRACT(...) functioniert nicht并認為這是解決方案 - 不適合我。
那么,誰能解釋一下為什么變體 1 甚至簡單的選擇陳述句都失敗了?提前致謝。
答案閱讀: 如何在 postgresql 中將日期格式轉換為毫秒?, 計算日期之間的差異 - Postgres
uj5u.com熱心網友回復:
問題是這樣的:
select extract(epoch from timestamp '02/22/2022 7:50');
date_part
------------
1645516200
select extract(epoch from '02/22/2022 7:50'::timestamp);
date_part
------------
1645516200
select EXTRACT(EPOCH FROM TIMESTAMP now());
ERROR: syntax error at or near "now"
LINE 1: select EXTRACT(EPOCH FROM TIMESTAMP now());
select timestamp now();
ERROR: syntax error at or near "("
LINE 1: select timestamp now();
select EXTRACT(EPOCH FROM now());
date_part
-------------------
1645545952.426751
這TIMESTAMP是CAST時間戳字串到時間戳型別的一個。相同的事情是由'02/22/2022 7:50'::timestamp. 無論哪種情況,演員都在尋找一個字串。在您的情況下,now()and _t1/ _t12已經是時間戳型別,因此您會收到錯誤訊息。因此,如果您使用的值timestamp/timestamptz/date已經是一種型別,請不要使用TIMESTAMP它來轉換它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/432171.html
標籤:PostgreSQL 约会时间 提炼
