我想插入一个日期到我的pg数据库中,但我不知道正确的格式是什么,pg帮助并没有真正的帮助。pgSQL:插入日期格式(前导零)?
我从格式为d-m-yyyy格式的我的日期。所以前导零被省略。
如何正确插入,是否有添加前导零(pg或php)的函数?
我想插入一个日期到我的pg数据库中,但我不知道正确的格式是什么,pg帮助并没有真正的帮助。pgSQL:插入日期格式(前导零)?
我从格式为d-m-yyyy格式的我的日期。所以前导零被省略。
如何正确插入,是否有添加前导零(pg或php)的函数?
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格式。
检查to_date(text, text)
功能(Table 9-21包含所有支持模式):
SELECT to_date('1-9-2011', 'DD-MM-YYYY');
to_date
------------
2011-09-01
(1 row)
正如你看到的前导零的正确输出添加日期。
要做的最好的事情是以明确的格式插入日期,因为无论服务器可能有什么设置,它都能保证始终有效。推荐的格式是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。
其实,如果你确认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)
只是为了完整性:中相关标准是[ISO 8601 *数据元素和交换格式 - 信息交换 - 日期和时间的表示*](http://en.wikipedia.org/wiki/ISO-8601)。 –