2

私は PHP アプリケーションに取り組んでおり、それは MySQL データベースを中心にしています。ユーザーの登録時間を自動的に記録したいと考えています。

  • どちらが良いでしょうか?PHPの日付関数を使用するか、MySQLに現在のタイムスタンプオプションがありますか(あると思います)。
  • MySQL の方が (精度の点で) 優れている場合、どのように実装しますか? テーブル構造はどうなりますか?
  • PHPの方が(精度の点で)優れている場合、それを行う最も簡単な方法は何ですか?

ご協力いただきありがとうございます!

4

4 に答える 4

2

MySQL DateTimeリファレンスをご覧ください。

MySQLで使用することをお勧めしUTC_TIMESTAMP()ます。その後、タイムゾーンを方程式から外し、かなり正確です。

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
    -> '2003-08-14 18:08:04', 20030814180804.000000

文字列として使用すると日付形式が返され、数値セレクタとして使用すると数値が返されます。

于 2012-07-23T21:55:20.233 に答える
1

この次のMYSQLコードはそれを行います:

INSERT INTO table_name (date_field) VALUE (now())

精度に関しては、MYSQL が挿入の時点に最も近くなりますが、PHP と MYSQL の違いは非常に小さいため、違いはありません。

于 2012-07-23T21:55:15.893 に答える
1

レコードを挿入するときに、MySQL 関数UNIX_TIMESTAMP()を使用できます。

PHP と MySQL はどちらもシステム クロックの時刻を使用するため、どちらを使用しても結果は同じになります。タイムスタンプも UTC で保存されるため、ユーザーのタイムゾーンに簡単に切り替えることができます。

IMO、どちらを使用しても違いはありません (PHP または MySQL 時間) が、私は個人的に登録時間をINTタイムスタンプとして列に保存します。

挿入は次のようになります。

INSERT INTO `user`
(id, username, registrationTime)
VALUES
(NULL, 'rgbc', UNIX_TIMESTAMP());
于 2012-07-23T21:56:30.153 に答える
1

これらを順番にお答えします。

  • MySQL の時間関数 (NOW()) を使用することを常にお勧めします。コードがよりクリーンで効率的なものになるからです。パフォーマンスの違いはわずかですが、PHP の date() 関数を使用して変数を設定し、後でクエリで呼び出すよりも、INSERT クエリで NOW() を使用する方が簡単です。

  • 精度を求める場合は、データベースに InnoDB エンジンを使用してください。構造の例は、id (int auto_increment)、name (tinytext)、password (tinytext)、salt (tinytext)、registerd_date (DATETIME) です。パスワードとソルトの列は、安全なハッシュ化されたパスワード (SHA512 など) を使用するためのものです。

  • 私の意見では、おそらく PHP が最も簡単です。最も簡単な方法は、通常の登録フォームを作成し、NOW() を使用して登録が行われた日時を記録することです。

幸運を、

デビッド

于 2012-07-23T21:57:47.907 に答える