12/25/2012 5:12:05 AM として保存された日付から時間を取得する方法。
date('l F j, Y, g:i a',strtotime($last_login_details[FL_DATETIME]));
上記の関数は、時刻を午前 12:00 として返しましたが、これは午前 5:12 を返すはずです。
FL_DATETIME のデータ型は DATE です。
データベースでは、値は次のように保存されています。
12/25/2012 5:12:05 AM
ドキュメントによると - http://docs.oracle.com/cd/B19306_01/server.102/b14220/datatype.htm#i1847 -
日付の入力と出力の場合、標準の Oracle 日付形式は DD-MON-YY です。
$last_login_details[FL_DATETIME]
それがエコーしている理由である可能性が最も高いです25-DEC-12
を使用してクエリを変更してみてくださいTO_CHAR()
SELECT TO_CHAR(FL_DATETIME, 'MM/DD/YYYY HH24:MI:SS A.M.') AS FL_DATETIME ...
http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html#date形式を参照してください
私の問題を解決しました:
SELECT TO_CHAR(FL_DATETIME, 'DD.MM.YYYY:HH24:MI:SS') FROM "FMS_LOG"
まず第一に、私の意見では、すべての日付をUNIXタイムスタンプとして保存する必要があります。これにより、時間に対する検索がはるかに簡単になり、日付文字列の操作から発生する可能性のある不整合がなくなります。
次に、コードをテストしました。私の知る限りでは大丈夫そうです。$last_login_details[FL_DATETIME]変数で取得しているものをエコーアウトします。問題は、日付文字列の操作ではなく、変数の割り当てにある可能性があります。
お役に立てば幸いです。