一、時間相關函數
1、now()函數
now()函數用來獲取當前時間和日期,包括時分秒毫秒。示例代碼:
SELECT now();
執行結果:
2021-10-13 17:30:13.301867+08
2、date_trunc()
date_trunc()函數用來截取時間的某個部分,比如只需要小時和分鐘,可以用以下代碼:
SELECT date_trunc('minute', now());
執行結果:
2021-10-13 17:30:00+08
3、extract()
extract()函數用來提取時間的某個部分,比如只需要小時,可以用以下代碼:
SELECT extract(hour from now());
執行結果:
17
二、時間計算
1、DATE型數據相加
如果需要將當前時間加上一天,可以使用以下代碼:
SELECT now() + INTERVAL '1 day';
執行結果:
2021-10-14 17:30:13.301867+08
2、時間相減
如果需要計算兩個時間之間的差值,可以使用以下代碼:
SELECT now() - '2021-10-01';
執行結果:
12 days 17:30:13.301867
三、時區相關
1、設置時區
可以使用以下代碼設置時區:
SET TIME ZONE 'Asia/Shanghai';
2、時區轉換
如果需要將當前時間轉換為其他時區的時間,可以使用以下代碼:
SELECT now() AT TIME ZONE 'UTC';
執行結果:
2021-10-13 09:30:13.301867+00
四、時間戳相關
1、獲取時間戳
可以使用以下代碼獲取當前時間的時間戳:
SELECT extract(epoch from now());
執行結果:
1634104213
2、UTC時間戳
如果需要獲取當前時間的UTC時間戳,可以使用以下代碼:
SELECT extract(epoch from now() AT TIME ZONE 'UTC');
執行結果:
1634077013
五、日期格式化
1、to_char()
to_char()函數用來將日期格式化為指定的格式,以下代碼用來將當前時間格式化為年月日格式:
SELECT to_char(now(), 'YYYY-MM-DD');
執行結果:
2021-10-13
2、to_timestamp()
如果需要將字符串轉為日期時間格式,可以使用to_timestamp()函數:
SELECT to_timestamp('2021-10-13 17:30:13', 'YYYY-MM-DD HH24:MI:SS');
執行結果:
2021-10-13 17:30:13
六、時區意識
1、timestamp with time zone類型
如果需要在不同的時區之間傳遞時間,在數據庫中存儲timestamp with time zone類型的時間比較好。以下代碼將當前時間轉為timestamp with time zone類型:
SELECT now() AT TIME ZONE 'UTC';
2、timestamp without time zone類型
如果不需要考慮時區,只需要存儲日期和時間的大小關係,可以使用timestamp without time zone類型的時間。以下代碼將當前時間轉為timestamp without time zone類型:
SELECT now()::timestamp without time zone;
七、總結
本文詳細介紹了pgsql當前時間的相關函數、時間計算、時區相關、時間戳相關、日期格式化、時區意識等方面的知識。在使用中要根據實際需求選擇合適的時間類型和函數使用,避免出現時間計算錯誤或時區混亂等問題。
原創文章,作者:RCSXH,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/351619.html