2011-07-17 64 views
1

我想插入一個日期到我的pg數據庫中,但我不知道正確的格式是什麼,pg幫助並沒有真正的幫助。pgSQL:插入日期格式(前導零)?

我從格式爲d-m-yyyy格式的我的日期。所以前導零被省略。

如何正確插入,是否有添加前導零(pg或php)的函數?

+0

只是爲了完整性:中相關標準是[ISO 8601 *數據元素和交換格式 - 信息交換 - 日期和時間的表示*](http://en.wikipedia.org/wiki/ISO-8601)。 –

回答

2
INSERT INTO TheTable (the_date) VALUES ('yyyy-mm-dd') 

是SQL

正確的順序
$psql_str = date('yyyy-mm-dd', date_parse_from_format('d-m-yyyy', $date_str)); 

$date_str轉換爲expcted格式。

1

檢查to_date(text, text)功能(Table 9-21包含所有支持模式):

SELECT to_date('1-9-2011', 'DD-MM-YYYY'); 
    to_date 
------------ 
2011-09-01 
(1 row) 

正如你看到的前導零的正確輸出添加日期。

0

要做的最好的事情是以明確的格式插入日期,因爲無論服務器可能有什麼設置,它都能保證始終有效。推薦的格式是YYYY-MM-DD。您可以使用此功能更改日期爲該格式:

function convertDate($old) { 
    $date = explode('-', $old); 
    if (strlen($date[0]) == 1) 
     $date[0] = '0' . $date[0]; 
    if (strlen($date[1]) == 1) 
     $date[1] = '0' . $date[1]; 
    $new = date[2] . '-' . $date[1] . '-' . $date[0]; 
    return $new; 
} 

其他數據格式也是可能的,但他們不太推薦,因爲它們依賴於可以從一個服務器到另一個改變設置。欲瞭解更多信息,請查看the relevant section of the documentation

0

其實,如果你確認DATESTYLE設置爲DMY(或更好, 「ISO,DMY」),那麼你不必做任何事情

postgres=# create table test_table (date_field date); 
CREATE TABLE 

postgres=# show DateStyle; 
DateStyle 
----------- 
ISO, MDY 
(1 row) 

postgres=# set DateStyle='ISO, DMY'; 
SET 

postgres=# insert into test_table (date_field) values ('2-4-2011'); 
INSERT 0 1 

postgres=# select * from test_table; 
date_field 
------------ 
2011-04-02 
(1 row)