CREATED
使用中のデータベースに日付を保存すると、まさに私が望むselect sysdate from dual
値が保存されます。9/12/2012 9:26:05 AM
ただし、PHPで情報を取得すると(例$query[0]['CREATED']
)、12-SEP-12
どうすればこれを防ぐことができますか?
完全を期すために、最初に接続を設定して、その瞬間から日付が常に次のような特定の形式で取得されるようにすることができます。
// Typical connection boilerplate
$conn_string = $config['engine'] . ':host=' . $config['host'] . ';port=' . $config['port'] . ';dbname=' . $config['dbname'] . ';charset=utf8';
$db = new PDO($conn_string,
$config['username'],
$config['password']
);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// This is where you prepare your session
// For your case, the format should be 'dd/mm/yyyy hh:mi:ss am' as stated on the previous answers
$db->query("ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI:SS'");
そうすれば、特定の列SELECT *
のフォーマットを毎回気にすることなく、一般的な 's を実行できます。DATE
日付を取得するときは、特定の時点の抽象的な表現から文字列に変換する必要があります。フォーマットを指定しない場合、デフォルトで使用されます (通常はNLS_DATE_FORMAT
):
SQL> select sysdate from dual;
SYSDATE
---------
12-SEP-12
特定の形式が必要な場合は、次のような変換関数を使用する必要がありますTO_CHAR
。
SQL> SELECT to_char(sysdate, 'dd/mm/yyyy hh:mi:ss am') dt FROM DUAL;
DT
----------------------
12/09/2012 04:25:04 pm