19

重複の可能性:
日時とタイムスタンプ?

列を持つMysqlテーブルがありますadd_date。レコードがデータベースに追加された日時を追跡します。

このテーブルに基づくクエリ:

  1. レコードが追加されたときの形式で表示: 2 時間前、4 週間前、1 年前など
  2. ユーザーが任意の日/月/年に挿入されたレコードを検索できるようにします。そのため、ユーザーは 2009 年に挿入されたレコードのみを表示することを選択できる場合があります。

この場合、unix のタイムスタンプと日時のどちらが良いでしょうか?

現在は両方を使用していますが、テーブルには時間の経過とともに数百万のレコードが含まれるため、両方の列を使用するとデータベースのサイズに影響を与える可能性があります。

2 hoursUnix タイムスタンプは、PHP で以前の形式に変換するのに適しているようで、タイムゾーンに依存しません。しかし、datetime の方が読みやすく、特定の日付/時刻/年に対するクエリを作成する方が簡単に思えます。

あなたの提案?

4

3 に答える 3

16

選択できる場合は、mySQL の日付を選択します。

  • 日付範囲の問題に対処する必要はありません

  • BETWEEN(), DATE_ADDMySQL の日付関数 (など)を使用して、期間を簡単に照会できます。

  • 日付関連のクエリは、特に何百万ものレコードがある場合、はるかに高速になります。FROM_UNIXTIME()これは、大規模なクエリでコストがかかる可能性があるものを使用する必要がないためです。

  • 必要に応じて DATE フィールドを UNIX タイムスタンプに変換するのは子供の遊びです。

于 2010-06-01T09:27:10.310 に答える
5

mysql には多数の datetime 関数があり、タイムスタンプを使用すると別の変換が必要になるため、mysql 形式を使用します。

ただし、テーブルには時間の経過とともに数百万のレコードが含まれるため、両方の列があるとデータベースのサイズに影響を与える可能性があります。

オーマイ。
追加の 4 メガバイトのスペースに本当に関心がありますか?

于 2010-06-01T09:25:21.747 に答える
5

UNIX タイムスタンプと MySQLfrom_unixtime()関数を使用して、必要に応じて結果を datetime 形式に変換することで、両方の利点を最大限に活用できます。

于 2010-06-01T09:25:56.207 に答える