嘗試了以下兩種方式,將pg中的timestamp格式轉(zhuǎn)換成date格式:
方式一:
select to_date( to_char( f.begin_time, 'yyyy-mm-dd' ), 'yyyy-mm-dd' ) from hafd f
方式二:
select f.begin_time::DATE from hafd f
大概比較了一下,9萬條測試數(shù)據(jù),方式二的性能更好!
補充:PostgreSQL中的時間戳格式轉(zhuǎn)化常識
前提:當數(shù)據(jù)庫中保存的是timestamp類型時,我們需要通過這個時間戳來做樂觀數(shù)據(jù)鎖,那么久需要Select出來,然后在更新的時候在Update的where條件中判斷時間戳是否與查詢時相同。
下面的SQL文查詢結(jié)果是 "2018-08-20 10:09:10.815125",并且返回類型可以當String處理。返回json等都方便使用。
SQL> select to_char(updateTime, 'yyyy-mm-dd hh24:mi:ss.us') from tbl_A;
更新時,參數(shù)傳入“2018-08-20 10:09:10.815125”的字符串,那么需要在SQL中轉(zhuǎn)化來匹配updateTime字段的timeStamp數(shù)據(jù)類型。
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');
另附表一張
函數(shù) |
返回類型 |
描述 |
例子 |
to_char(timestamp, text) |
text |
把時間戳轉(zhuǎn)換成字串 |
to_char(current_timestamp, 'HH12:MI:SS') |
to_char(interval, text) |
text |
把時間間隔轉(zhuǎn)為字串 |
to_char(interval '15h 2m 12s', 'HH24:MI:SS') |
to_char(int, text) |
text |
把整數(shù)轉(zhuǎn)換成字串 |
to_char(125, '999') |
to_char(double precision, text) |
text |
把實數(shù)/雙精度數(shù)轉(zhuǎn)換成字串 |
to_char(125.8::real, '999D9') |
to_char(numeric, text) |
text |
把numeric轉(zhuǎn)換成字串 |
to_char(-125.8, '999D99S') |
to_date(text, text) |
date |
把字串轉(zhuǎn)換成日期 |
to_date('05 Dec 2000', 'DD Mon YYYY') |
to_timestamp(text, text) |
timestamp |
把字串轉(zhuǎn)換成時間戳 |
to_timestamp('05 Dec 2000', 'DD Mon YYYY') |
to_timestamp(double) |
timestamp |
把UNIX紀元轉(zhuǎn)換成時間戳 |
to_timestamp(200120400) |
to_number(text, text) |
numeric |
把字串轉(zhuǎn)換成numeric |
to_number('12,454.8-', '99G999D9S') |
模式 |
描述 |
HH |
一天的小時數(shù)(01-12) |
HH12 |
一天的小時數(shù)(01-12) |
HH24 |
一天的小時數(shù)(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 |
一個月里的周數(shù)(1-5)(第一周從該月第一天開始) |
WW |
一年里的周數(shù)(1-53)(第一周從該年的第一天開始) |
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- PostgreSQL LIKE 大小寫實例
- Postgresql中LIKE和ILIKE操作符的用法詳解
- PostgreSQL中的COMMENT用法說明
- 使用PostgreSQL為表或視圖創(chuàng)建備注的操作
- postgresql安裝及配置超詳細教程
- Docker環(huán)境下升級PostgreSQL的步驟方法詳解
- postgresql insert into select無法使用并行查詢的解決
- postgresql varchar字段regexp_replace正則替換操作
- 關(guān)于PostgreSQL錯誤日志與慢查詢?nèi)罩臼占?/li>
- 淺談PostgreSQL中大小寫不敏感問題