2つのタイムスタンプの差を秒単位で取得する方法 質問する

2つのタイムスタンプの差を秒単位で取得する方法 質問する

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() データ型を返すTIMETIME値の範囲は「-838:59:59」から「838:59:59」(およそ34.96日)です。

おすすめ記事