MySQLでクエリを作成して、2つのタイムスタンプの差を秒単位で取得できる方法はありますか、それともPHPでそれを行う必要がありますか?もしそうなら、私はそれをどうやってやりますか?
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)
@Amberが他の回答で提案されているように、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
カラム、関数は、暗黙の「ストリングからのUnixタイムスタンプ」変換で、直接内部タイムスタンプ値を返します。の
TIMEDIFF()
データ型TIME
を返すことに注意してください。TIME
値の範囲は「-838:59:59」から「838:59:59」です(約34.96日)
「TIMESTAMPDIFF」はどうですか:
SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff
str_to_date(date_column, '%m/%d/%Y')
。フォーマットを修正する必要がある列のTIMESTAMPDIFF関数内で。
TIME_TO_SEC
maxが最大になるので、私にとってより良い答え3020399
です。
unit
ますSECOND
。パラメーターをに設定するだけです。