2011-07-17 60 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)