私は自分の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));
expcted形式に$date_str
を変換しています。
チェック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)です。 –