2014-01-09 52 views
2

我想創建一個新表格並設置具有特定格式的日期類型。那可能嗎?PostgreSQL - 創建表格並設置特定日期格式

例如:

CREATE TABLE User (
... 
EXPIRATION DATE " YYYY/MM" 
... 
) 
+0

可能重複http://stackoverflow.com/questions/5467031/postgresql:

最後,你可以在輸出格式化你的約會你to_char()喜歡的任何方式日期格式) – DrColossos

+0

我認爲「重複」答案達到你想要的。如果情況並非如此,請忽略上面的評論,但我認爲鏈接的問題會做你想做的。 – DrColossos

+0

日期沒有「格式」 –

回答

3

我提出一個不同的方法:決不存儲日期/時間character typetextvarchar(),...)開始。在你的情況下,使用appropriate type,可能date

另外,從不使用reserved words作爲標識符。 user只是不可能開始,你將不得不雙引號,我會勸阻。 看起來是這樣的:

CREATE TABLE usr (
    usr_id serial PRIMARY KEY 
,usr text UNIQUE 
,expiration_date date 
    ... 
); 

現在,各種輸入格式是可能的,只要他們是毫不含糊的。 related question @DrColossos has linked to in his comment有更多。
The manual has all the details.

要執行特殊的輸入格式,你可以運行文本通過to_date()函數文本。例如:

INSERT INTO usr (usr, expiration_date) 
VALUES ('flippin_user', to_date($my_date_literal, ' YYYY/MM'); 

注意:如果包括在圖形先端空白,它從輸入期望!

SELECT usr, to_char(expiration_date, ' YYYY/MM') AS formatted_exp_date 
WHERE usr_id = 1; 
[PostgreSQL的日期格式(中
+0

你說得對,我只是用'user'作爲例子。我的意思是我想從excel文件中插入數據,所以我使用命令'COPY usr FROM'C:\ usr.csv' WITH(FORMAT CSV,HEADER);'。我可以在這個命令中使用類似於你的建議的東西嗎? –

+0

@ D-Lef:這是一個新問題。 [考慮這個相關的答案。](http://stackoverflow.com/questions/8130594/postgresql-how-to-convert-string-date-to-timestamp-without-knowing-the-date-form/8130748#8130748) –

+0

謝謝。正如我在上面的評論中提到的那樣,我想知道在創建表格時是否有辦法「鎖定」日期格式。 –