strtotime
次の関数を使用して、日付を簡単に変換できますphp
。
date_default_timezone_set('UTC');
$date = '2011-10-02T23:25:42Z';//(aka ISO 8601 in UTC)
$time = strtotime($date); //time is now equals to the timestamp
$converted = date('l, F jS Y \a\t g:ia', $time); //convert to date if you prefer, credit to Marc B for the parameters
これで、ニーズに最も合ったものMySQL
を使用するtimestamp
か、それに応じて日付を挿入するだけです。datetime
ここでは、両方のタイプについて知っておくべき最も重要なことを説明します。
タイムスタンプ
- '1970-01-01 00:00:01' UTC から '2038-01-09 03:14:07' UTC の範囲
- タイムゾーン設定の影響を受けます。
- 4 バイトのストレージ
on update current_timestamp
すべてのバージョンの列を許可します。
- インデックスの方が早い
NULL
可能なデフォルト値ではありません
- 値は現在のタイム ゾーンから に
UTC
変換されて保存され、 から現在のタイム ゾーンに変換さUTC
れて取得されます。
日付時刻
- 「1000-01-01 00:00:00」から「9999-12-31 23:59:59」までの範囲
- 定数 (タイムゾーンは影響しません)
- 8 バイトのストレージ
- バージョンの時点でのみ列の更新を許可する
5.6.5
比較 (例: 2 つの日付/時刻間のレコードの取得) とクエリからの結果の順序付けに最適なのはどれですか? データベースが非常に大きい場合はどうなりますか?
私が述べた前のポイントによるとtimestamp
、ストレージが小さく、インデックスが高速であるため、非常に大きなデータベースに使用する必要があります。これにより、比較のパフォーマンスが向上します。ただし、日付が前述の の制限に適合していることを確認する必要timestamp
がありますdatetime
。
ドキュメントstrtotime
: http://php.net/manual/en/function.strtotime.php
mysql*
そして、 DEPRECATED関数を使用しないように毎日繰り返し続けるSOの回答者のために、PDO
またはmysqli*
挿入を行うときに使用してください。
http://php.net/manual/en/book.pdo.php
http://php.net/manual/en/book.mysqli.php