1. ホーム
  2. mysql

[解決済み] MySQL: 2つのタイムスタンプの差を秒単位で取得する方法

2022-08-10 17:11:50

質問

MySQL で、2 つのタイムスタンプの差を秒単位で表示するクエリを作成する方法はありますか?または PHP でそれを行う必要がありますか?もしそうなら、私はどのようにそれを行うために行くのでしょうか?

どのように解決するのですか?

あなたは TIMEDIFF() TIME_TO_SEC() の関数は次のようになります。

SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

また UNIX_TIMESTAMP() という関数を 琥珀色の提案 を他の回答で提案しています。

SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') - 
       UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

もしあなたが TIMESTAMP のデータ型を使用しているのであれば、おそらく UNIX_TIMESTAMP() ソリューションの方がわずかに速いでしょう。 TIMESTAMP の値はすでにエポックからの秒数を表す整数として保存されているからです ( ソース ). を引用して ドキュメント :

いつ UNIX_TIMESTAMP() が使われている場合 TIMESTAMP カラムで使用された場合、この関数は暗黙の "string-to-Unix-timestamp" 変換を行わず、内部のタイムスタンプ値を直接返します。

覚えておいてほしいのは TIMEDIFF() のデータ型を返す TIME . TIME の値は '-838:59:59' から '838:59:59' (およそ 34.96 日) までの範囲になります。