pgSQL:插入日期格式(前导零)?

时间:2011-07-17 13:06:51

标签: php sql forms postgresql

我想在我的pg数据库中插入一个日期,但我不知道正确的格式是什么,而pg帮助并没有真正起作用。

我的格式为d-m-yyyy格式。因此省略前导零。

如何正确插入,是否有添加前导零(pg或php)的函数?

4 个答案:

答案 0 :(得分: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转换为已解除的格式。

答案 1 :(得分:1)

检查to_date(text, text)函数(Table 9-21包含所有支持的模式):

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

如您所见,在输出日期正确添加了前导零。

答案 2 :(得分: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

答案 3 :(得分: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)