sql >> データベース >  >> RDS >> Mysql

php mysqliを使用してイベントのリアルタイムをデータベースに挿入するにはどうすればよいですか?

    タイムゾーンをいじる代わりに、なぜそうしないのですか

    ALTER TABLE `your_table`
      CHANGE `date_added` `date_added`
      TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    

    これは変更されますDATE列からTIMESTAMP列への列 、プロセスですべての日付をそれぞれのUTCタイムスタンプに変換します。

    新しい行が挿入されると、現在のタイムスタンプが使用されます値として 。タイムスタンプは常にUTCであるため、MySqlサーバーのタイムゾーンを変更したり、新しい行を挿入するときに日付を指定したりする必要はありません。

    列を変更できない、または変更したくない場合は、

    からタイムスタンプを選択することもできます。
    SELECT UNIX_TIMESTAMP('date_added') FROM your_table;
    

    TimeAgoの場合は、次のようにすることができます

    $now = new DateTime;
    $dateAdded = new DateTime("@$yourTimestampFromDb");
    $dateAdded->setTimezone($now->getTimezone());
    $timeSinceAdded = $dateAdded->diff($now);
    

    DateTimeにタイムスタンプを指定すると、デフォルトのサーバータイムゾーン設定に関係なく、常にUTCが使用されます。したがって、$dateAddedを変換する必要があります (上記のように)デフォルトのタイムゾーンに変換するか、$timeSinceAddedを変換します UTCに。

    dateTimeを現在アクセスしているユーザーのタイムゾーンに変更するには、次のいずれかを行います。

    いずれの場合も、両方のDateTimeをそのタイムゾーンに変更するだけです。 これはsetTimezone()を介して簡単に実行できます 。

    $timeSinceAdded その場合、DateIntervalになります オブジェクト、このように使用できます

    echo $timeSinceAdded->format('%a total days');
    

    利用可能なフォーマット修飾子などの詳細については、リンクを参照してください。



    1. PostgreSQLでJSONB値をマージしますか?

    2. MongoクラスターをSSLで保護する

    3. SQL Server数学関数(完全なリスト)

    4. MySQLは文字列を日付に変換します年齢を計算し、年齢別に並べ替えます