-1

MySQL を使用して、時刻データを 1970 年 1 月 1 日 UTC の午前 0 時からのミリ秒数である Int として、またはタイムスタンプとしてデータベースに保存する必要があります。

どちらにも利点があることはわかっていますが、どちらが最善の方法ですか?

4

2 に答える 2

3

PHP コードの観点からは確かなことは言えませんが、MySQL の日時形式で保存すると、FROM_UNIXTIME で最初に変換する必要なく、すべての MySQL の日付/時刻関数が開かれます。また、タイムスタンプには 2038 年の制限があります。

コメントが言うように、どちらの方法でも変換できるため、SQL ステートメントまたは PHP コードのどこで最も便利になりたいかという問題になります。

IMHO、時刻/日付は単なる数値ではありません。それらの使用には特別な目的があるため、それらを単なる数値として保存すると、自分自身が制限されます。

于 2012-06-12T23:05:03.397 に答える
0

MySQL でタイムスタンプを使用する場合、考慮すべきことが他にもいくつかあります。

データベース内のテーブルごとに 1 つのタイムスタンプ列のみが許可されます (以下の編集を参照してください)。

datetime 列ではできないがタイムスタンプ列でできる 1 つの優れた点は、デフォルトの CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP を使用できることです (これを実行できる列は 1 つだけです)。

それと、すでに述べた他のことを除けば、それがこれらの列を使用する唯一の動機だと思います。

編集:テーブルに複数のタイムスタンプ列を含めることができます。ただし、テーブルごとに DEFAULT CURRENT_TIMESTAMP タイムスタンプを 1 つしか持つことができません。テーブルに列を追加する場合は、次の点に注意してください。

ALTER TABLE table_name ADD COLUMN col_name TIMESTAMP

そのテーブルには別のタイムスタンプ列がなく、暗黙的にそれを定義に追加します。少なくとも MySQL 5.0.92 では。以下の説明を参照してください。

于 2012-06-12T23:39:34.750 に答える