首頁 > 軟體

postgresql中的時間戳格式化

2023-09-06 22:17:28

postgresql時間戳格式化

平時總記不住pg裡面怎麼將時間戳格式化,記錄常用的格式化時間

-- 年
select to_char(to_timestamp(1608018517000 / 1000),'yyyy');  
-- 年-月
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM');
-- 年-月-日
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd'); 
-- 年-月-日 時
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd HH24'); 對應JAVA 的「yyyy-MM-dd HH」
-- 年-月-日 時:分  
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd HH24:MI');對應JAVA 的「yyyy-MM-dd HH:mm」
-- 年-月-日 時:分:秒  
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd HH24:MI:SS');對應JAVA 的「yyyy-MM-dd HH:mm:ss」

postgresql中時間戳格式轉化常識

前提:當資料庫中儲存的是timestamp型別時,我們需要通過這個時間戳來做樂觀資料鎖,那麼久需要Select出來,然後在更新的時候在Update的where條件中判斷時間戳是否與查詢時相同。

下面的SQL文查詢結果是 "2018-08-20 10:09:10.815125",並且返回型別可以當String處理。返回json等都方便使用。

SQL> select to_char(updateTime, 'yyyy-mm-dd hh24:mi:ss.us') from tbl_A;

更新時,引數傳入“2018-08-20 10:09:10.815125”的字串,那麼需要在SQL中轉化來匹配updateTime欄位的timeStamp資料型別。

SQL> update tbl_A set username='XXX' where userid='001' and updateTime = to_timestamp('2018-08-20 10:09:10.815125','yyyy-mm-dd hh24:mi:ss.us');

另附表一張

函數返回型別描述例子
to_char(timestamp, text)text把時間戳轉換成字串to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval, text)text把時間間隔轉為字串to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(int, text)text把整數轉換成字串to_char(125, '999')
to_char(double precision, text)text把實數/雙精度數轉換成字串to_char(125.8::real, '999D9')
to_char(numeric, text)text把numeric轉換成字串to_char(-125.8, '999D99S')
to_date(text, text)date把字串轉換成日期to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text)timestamp把字串轉換成時間戳to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(double)timestamp把UNIX紀元轉換成時間戳to_timestamp(200120400)
to_number(text, text)numeric把字串轉換成numericto_number('12,454.8-', '99G999D9S')
模式描述
HH一天的小時數(01-12)
HH12一天的小時數(01-12)
HH24一天的小時數(00-23)
MI分鐘(00-59)
SS秒(00-59)
MS毫秒(000-999)
US微秒(000000-999999)
AM正午標識(大寫)
Y,YYY帶逗號的年(4和更多位)
YYYY年(4和更多位)
YYY年的後三位
YY年的後兩位
Y年的最後一位
MONTH全長大寫月份名(空白填充為9字元)
Month全長混合大小寫月份名(空白填充為9字元)
month全長小寫月份名(空白填充為9字元)
MON大寫縮寫月份名(3字元)
Mon縮寫混合大小寫月份名(3字元)
mon小寫縮寫月份名(3字元)
MM月份號(01-12)
DAY全長大寫日期名(空白填充為9字元)
Day全長混合大小寫日期名(空白填充為9字元)
day全長小寫日期名(空白填充為9字元)
DY縮寫大寫日期名(3字元)
Dy縮寫混合大小寫日期名(3字元)
dy縮寫小寫日期名(3字元)
DDD一年裡的日子(001-366)
DD一個月裡的日子(01-31)
D一週裡的日子(1-7;週日是1)
W一個月裡的週數(1-5)(第一週從該月第一天開始)
WW一年裡的週數(1-53)(第一週從該年的第一天開始)

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com