PostgreSQL數(shù)據(jù)類型格式化函數(shù)操作
數(shù)據(jù)類型格式化函數(shù):
PostgreSQL格式化函數(shù)提供一套有效的工具用于把各種數(shù)據(jù)類型(日期/時(shí)間、integer、floating point和numeric)轉(zhuǎn)換成格式化的字符串以及反過(guò)來(lái)從格式化的字符串轉(zhuǎn)換成指定的數(shù)據(jù)類型。
下面列出了這些函數(shù),它們都遵循一個(gè)公共的調(diào)用習(xí)慣:第一個(gè)參數(shù)是待格式化的值,而第二個(gè)是定義輸出或輸出格式的模板。
函數(shù) | 返回類型 | 描述 | 例子 |
to_char(timestamp, text) | text | 把時(shí)間戳轉(zhuǎn)換成字串 | to_char(current_timestamp, ‘HH12:MI:SS') |
to_char(interval, text) | text | 把時(shí)間間隔轉(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ù)/雙精度數(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)換成時(shí)間戳 | to_timestamp(‘05 Dec 2000', ‘DD Mon YYYY') |
to_timestamp(double) | timestamp | 把UNIX紀(jì)元轉(zhuǎn)換成時(shí)間戳 | to_timestamp(200120400) |
to_number(text, text) | numeric | 把字串轉(zhuǎn)換成numeric | to_number(‘12,454.8-‘, ‘99G999D9S') |
1. 用于日期/時(shí)間格式化的模式:
模式 | 描述 |
HH | 一天的小時(shí)數(shù)(01-12) |
HH12 | 一天的小時(shí)數(shù)(01-12) |
HH24 | 一天的小時(shí)數(shù)(00-23) |
MI | 分鐘(00-59) |
SS | 秒(00-59) |
MS | 毫秒(000-999) |
US | 微秒(000000-999999) |
AM | 正午標(biāo)識(shí)(大寫) |
Y,YYY | 帶逗號(hào)的年(4和更多位) |
YYYY | 年(4和更多位) |
YYY | 年的后三位 |
YY | 年的后兩位 |
Y | 年的最后一位 |
MONTH | 全長(zhǎng)大寫月份名(空白填充為9字符) |
Month | 全長(zhǎng)混合大小寫月份名(空白填充為9字符) |
month | 全長(zhǎng)小寫月份名(空白填充為9字符) |
MON | 大寫縮寫月份名(3字符) |
Mon | 縮寫混合大小寫月份名(3字符) |
mon | 小寫縮寫月份名(3字符) |
MM | 月份號(hào)(01-12) |
DAY | 全長(zhǎng)大寫日期名(空白填充為9字符) |
Day | 全長(zhǎng)混合大小寫日期名(空白填充為9字符) |
day | 全長(zhǎng)小寫日期名(空白填充為9字符) |
DY | 縮寫大寫日期名(3字符) |
Dy | 縮寫混合大小寫日期名(3字符) |
dy | 縮寫小寫日期名(3字符) |
DDD | 一年里的日子(001-366) |
DD | 一個(gè)月里的日子(01-31) |
D | 一周里的日子(1-7;周日是1) |
W | 一個(gè)月里的周數(shù)(1-5)(第一周從該月第一天開始) |
WW | 一年里的周數(shù)(1-53)(第一周從該年的第一天開始) |
2. 用于數(shù)值格式化的模板模式:
模式 | 描述 |
9 | 帶有指定數(shù)值位數(shù)的值 |
0 | 帶前導(dǎo)零的值 |
.(句點(diǎn)) | 小數(shù)點(diǎn) |
,(逗號(hào)) | 分組(千)分隔符 |
PR | 尖括號(hào)內(nèi)負(fù)值 |
S | 帶符號(hào)的數(shù)值 |
L | 貨幣符號(hào) |
D | 小數(shù)點(diǎn) |
G | 分組分隔符 |
MI | 在指明的位置的負(fù)號(hào)(如果數(shù)字 < 0) |
PL | 在指明的位置的正號(hào)(如果數(shù)字 > 0) |
SG | 在指明的位置的正/負(fù)號(hào) |
時(shí)間/日期函數(shù)和操作符:
1. 下面是PostgreSQL中支持的時(shí)間/日期操作符的列表:
操作符 | 例子 | 結(jié)果 |
+ | date ‘2001-09-28' + integer ‘7' | date ‘2001-10-05' |
+ | date ‘2001-09-28' + interval ‘1 hour' | timestamp ‘2001-09-28 01:00' |
+ | date ‘2001-09-28' + time ‘03:00' | timestamp ‘2001-09-28 03:00' |
+ | interval ‘1 day' + interval ‘1 hour' | interval ‘1 day 01:00' |
+ | timestamp ‘2001-09-28 01:00' + interval ‘23 hours' | timestamp ‘2001-09-29 00:00' |
+ | time ‘01:00' + interval ‘3 hours' | time ‘04:00' |
- | - interval ‘23 hours' | interval ‘-23:00' |
- | date ‘2001-10-01' - date ‘2001-09-28' | integer ‘3' |
- | date ‘2001-10-01' - integer ‘7' | date ‘2001-09-24' |
- | date ‘2001-09-28' - interval ‘1 hour' | timestamp ‘2001-09-27 23:00' |
- | time ‘05:00' - time ‘03:00' | interval ‘02:00' |
- | time ‘05:00' - interval ‘2 hours' | time ‘03:00' |
- | timestamp ‘2001-09-28 23:00' - interval ‘23 hours' | timestamp ‘2001-09-28 00:00' |
- | interval ‘1 day' - interval ‘1 hour' | interval ‘23:00' |
- | timestamp ‘2001-09-29 03:00' - timestamp ‘2001-09-27 12:00' | interval ‘1 day 15:00' |
* | interval ‘1 hour' * double precision ‘3.5' | interval ‘03:30' |
/ | interval ‘1 hour' / double precision ‘1.5' | interval ‘00:40' |
2. 日期/時(shí)間函數(shù):
函數(shù) | 返回類型 | 描述 | 例子 | 結(jié)果 |
age(timestamp, timestamp) | interval | 減去參數(shù),生成一個(gè)使用年、月的”符號(hào)化”的結(jié)果 | age(‘2001-04-10', timestamp ‘1957-06-13') | 43 years 9 mons 27 days |
age(timestamp) | interval | 從current_date減去得到的數(shù)值 | age(timestamp ‘1957-06-13') | 43 years 8 mons 3 days |
current_date | date | 今天的日期 | ||
current_time | time | 現(xiàn)在的時(shí)間 | ||
current_timestamp | timestamp | 日期和時(shí)間 | ||
date_part(text, timestamp) | double | 獲取子域(等效于extract) | date_part(‘hour', timestamp ‘2001-02-16 20:38:40') | 20 |
date_part(text, interval) | double | 獲取子域(等效于extract) | date_part(‘month', interval ‘2 years 3 months') | 3 |
date_trunc(text, timestamp) | timestamp | 截?cái)喑芍付ǖ木?/td> | date_trunc(‘hour', timestamp ‘2001-02-16 20:38:40') | 2001-02-16 20:00:00+00 |
extract(field from timestamp) | double | 獲取子域 | extract(hour from timestamp ‘2001-02-16 20:38:40') | 20 |
extract(field from interval) | double | 獲取子域 | extract(month from interval ‘2 years 3 months') | 3 |
localtime | time | 今日的時(shí)間 | ||
localtimestamp | timestamp | 日期和時(shí)間 | ||
now() | timestamp | 當(dāng)前的日期和時(shí)間(等效于 current_timestamp) | ||
timeofday() | text | 當(dāng)前日期和時(shí)間 |
3. EXTRACT,date_part函數(shù)支持的field:
域 | 描述 | 例子 | 結(jié)果 |
CENTURY | 世紀(jì) | EXTRACT(CENTURY FROM TIMESTAMP ‘2000-12-16 12:21:13'); | 20 |
DAY | (月分)里的日期域(1-31) | EXTRACT(DAY from TIMESTAMP ‘2001-02-16 20:38:40'); | 16 |
DECADE | 年份域除以10 | EXTRACT(DECADE from TIMESTAMP ‘2001-02-16 20:38:40'); | 200 |
DOW | 每周的星期號(hào)(0-6;星期天是0) (僅用于timestamp) | EXTRACT(DOW FROM TIMESTAMP ‘2001-02-16 20:38:40'); | 5 |
DOY | 一年的第幾天(1 -365/366) (僅用于 timestamp) | EXTRACT(DOY from TIMESTAMP ‘2001-02-16 20:38:40'); | 47 |
HOUR | 小時(shí)域(0-23) | EXTRACT(HOUR from TIMESTAMP ‘2001-02-16 20:38:40'); | 20 |
MICROSECONDS | 秒域,包括小數(shù)部分,乘以 1,000,000。 | EXTRACT(MICROSECONDS from TIME ‘17:12:28.5'); | 28500000 |
MILLENNIUM | 千年 | EXTRACT(MILLENNIUM from TIMESTAMP ‘2001-02-16 20:38:40'); | 3 |
MILLISECONDS | 秒域,包括小數(shù)部分,乘以 1000。 | EXTRACT(MILLISECONDS from TIME ‘17:12:28.5'); | 28500 |
MINUTE | 分鐘域(0-59) | EXTRACT(MINUTE from TIMESTAMP ‘2001-02-16 20:38:40'); | 38 |
MONTH | 對(duì)于timestamp數(shù)值,它是一年里的月份數(shù)(1-12);對(duì)于interval數(shù)值,它是月的數(shù)目,然后對(duì)12取模(0-11) | EXTRACT(MONTH from TIMESTAMP ‘2001-02-16 20:38:40'); | 2 |
QUARTER | 該天所在的該年的季度(1-4)(僅用于 timestamp) | EXTRACT(QUARTER from TIMESTAMP ‘2001-02-16 20:38:40'); | 1 |
SECOND | 秒域,包括小數(shù)部分(0-59[1]) | EXTRACT(SECOND from TIMESTAMP ‘2001-02-16 20:38:40'); | 40 |
WEEK | 該天在所在的年份里是第幾周。 | EXTRACT(WEEK from TIMESTAMP ‘2001-02-16 20:38:40'); | 7 |
YEAR | 年份域 | EXTRACT(YEAR from TIMESTAMP ‘2001-02-16 20:38:40'); | 2001 |
4. 當(dāng)前日期/時(shí)間:
我們可以使用下面的函數(shù)獲取當(dāng)前的日期和/或時(shí)間∶
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME (precision) CURRENT_TIMESTAMP (precision) LOCALTIME LOCALTIMESTAMP LOCALTIME (precision) LOCALTIMESTAMP (precision)
文中提供的所有信息均源自PostgreSQL官方文檔,編寫該篇文章的主要目的是便于今后的查閱,特此聲明。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Postgresql去重函數(shù)distinct的用法說(shuō)明
- PostgreSQL 定義返回表函數(shù)的操作
- PostgreSQL的generate_series()函數(shù)的用法說(shuō)明
- postgresql合并string_agg函數(shù)的實(shí)例
- PostgreSQL批量修改函數(shù)擁有者的操作
- 在postgresql數(shù)據(jù)庫(kù)中判斷是否是數(shù)字和日期時(shí)間格式函數(shù)操作
- Postgresql自定義函數(shù)詳解
- postgresql 循環(huán)函數(shù)的簡(jiǎn)單實(shí)現(xiàn)操作
相關(guān)文章
PostgreSQL13基于流復(fù)制搭建后備服務(wù)器的方法
這篇文章主要介紹了PostgreSQL13基于流復(fù)制搭建后備服務(wù)器,后備服務(wù)器作為主服務(wù)器的數(shù)據(jù)備份,可以保障數(shù)據(jù)不丟,而且在主服務(wù)器發(fā)生故障后可以提升為主服務(wù)器繼續(xù)提供服務(wù)。需要的朋友可以參考下2022-01-01Ubuntu中卸載Postgresql出錯(cuò)的解決方法
這篇文章主要給大家介紹了關(guān)于在Ubuntu中卸載Postgresql出錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09PostgreSQL regexp_matches替換like模糊查詢的操作
這篇文章主要介紹了PostgreSQL regexp_matches替換like模糊查詢的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01pg中replace和translate的用法說(shuō)明(數(shù)據(jù)少的中文排序)
這篇文章主要介紹了pg中replace和translate的用法說(shuō)明(數(shù)據(jù)少的中文排序),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01PostgreSQL處理數(shù)據(jù)并發(fā)更新沖突的解決方法
在數(shù)據(jù)庫(kù)并發(fā)操作環(huán)境中,多個(gè)事務(wù)同時(shí)嘗試更新相同的數(shù)據(jù)可能導(dǎo)致沖突,PostgreSQL?提供了一系列機(jī)制來(lái)處理這些并發(fā)更新沖突,以確保數(shù)據(jù)的一致性和完整性,所以本文給大家介紹了PostgreSQL處理數(shù)據(jù)并發(fā)更新沖突的解決方法,需要的朋友可以參考下2024-07-07使用PostgreSQL的JSONB數(shù)據(jù)類型進(jìn)行高效查詢的示例代碼
PostgreSQL的JSONB數(shù)據(jù)類型提供了一種靈活的方式來(lái)存儲(chǔ)和查詢JSON格式的數(shù)據(jù),下面我們將詳細(xì)討論如何使用JSONB數(shù)據(jù)類型進(jìn)行高效查詢,并提供相應(yīng)的解決方案和示例代碼,需要的朋友可以參考下2024-04-04postgresql 兩表關(guān)聯(lián)更新操作
這篇文章主要介紹了postgresql 兩表關(guān)聯(lián)更新操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-0115個(gè)postgresql數(shù)據(jù)庫(kù)實(shí)用命令分享
這篇文章主要介紹了15個(gè)實(shí)用的postgresql數(shù)據(jù)庫(kù)命令分享,都是一些技巧性的postgresql命令,需要的朋友可以參考下2014-07-07