MySQL で 2 つのタイムスタンプの差を秒単位で返すクエリを作成する方法はありますか。それとも、PHP で行う必要がありますか。もしそうなら、どのように実行すればよいですか。
ベストアンサー1
あなたは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()
機能として@Amberが提案別の回答では:
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
、関数は暗黙的な「文字列から Unix タイムスタンプ」への変換を行わずに、内部タイムスタンプ値を直接返します。それを念頭に置いて
TIMEDIFF()
データ型を返すTIME
。TIME
値の範囲は「-838:59:59」から「838:59:59」(およそ34.96日)です。