我想在我的pg数据库中插入一个日期,但我不知道正确的格式是什么,而pg帮助并没有真正起作用。
我的格式为d-m-yyyy格式。因此省略前导零。
如何正确插入,是否有添加前导零(pg或php)的函数?
答案 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)