2015-11-11 29 views
0

我想從'YYYY-MM-DD'格式化我的日期列爲'YYYYMM'。我的代碼是: SELECT to_char(date'2015-06-01','YYYYMM');PostgresSQL日期格式

我不確定這是否有效,因爲日期仍然看起來像原始格式。另外,新的「YYYYMM」格式是否會應用於此表中導入的數據?

+0

請詳細說明您的問題 –

+0

查看postgresql [documentation](http://www.postgresql.org/docs/9.0/static/functions-formatting.html)以供參考。 – PK20

+0

強制轉換爲字符,子串等 – jarlh

回答

2

date類型實現爲從2000-01-01開始的天數 - 而且這個數字沒有任何可視化形式 - 它只是偏移量。您可以更改數據可視化時使用的可視化。

postgres=# set datestyle to ISO; 
postgres=# select current_date; 
┌────────────┐ 
│ date │ 
╞════════════╡ 
│ 2015-11-11 │ 
└────────────┘ 
(1 row) 

postgres=# set datestyle to GERMAN; 
postgres=# select current_date; 
┌────────────┐ 
│ date │ 
╞════════════╡ 
│ 11.11.2015 │ 
└────────────┘ 
(1 row) 

有用於格式化日期to_char和處理日期字符串to_date等輔助功能。可用於datestyle的一組樣式有限。更多datestyle是全局變量,使用它會增加應用程序中不需要的缺陷的風險 - 因此datestyle的使用不是首選。

postgres=# select to_char(current_date, 'YYYYMM'); 
┌─────────┐ 
│ to_char │ 
╞═════════╡ 
│ 201511 │ 
└─────────┘ 
(1 row) 
set datestyle to iso; 
postgres=# select to_date('201511','YYYYMM'); 
┌────────────┐ 
│ to_date │ 
╞════════════╡ 
│ 2015-11-01 │ 
└────────────┘ 
(1 row) 

默認情況下,數據以文本格式從Postgres傳輸到客戶端。因此,這些格式化函數(功能)的使用會影響客戶端收到的數據(來自數據庫)。 to_char顯式轉換爲文本類型,所以任何客戶端都可以讀取它(因爲它必須能夠讀取文本)。