web-dev-qa-db-ja.com

秒の2つのタイムスタンプのMySqlの違いは?

Mysqlで2つのタイムスタンプの差を計算し、数秒で出力結果を取得することは可能ですか? 2010-11-29 13:16:55-2010-11-29 13:13:55のように180秒を与える必要があります。

ありがとうございました

36
Good Guy

NIX_TIMESTAMP関数 を使用して、1970年1月1日から開始して、DATETIMEを秒単位の値に変換します。

SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output

結果:

output
-------
180

どの値が他の値よりも大きいかわからない場合に対処する簡単な方法- ABS function を使用します。

SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output
31
OMG Ponies

受け入れられた答えが良い普遍的な解決策だとは思いません!

これは、UNIX_TIMESTAMP()関数が1970-01-01より前のDATE(および32ビット整数を使用した遠い将来の日付)で失敗するためです。これは多くの生きている人々の誕生の日に簡単に起こるかもしれません。

より良い解決策は次のとおりです。

SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55')

DAY YEAR MONTH HOURとMINUTEも返すように変更できます!

146
OderWat

TIMESTAMPDIFFメソッドは、日時形式でのみ機能します。 '11:10:00 'から'10:20:00'のような2回だけの差が必要な場合は、

select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00')
2
Santhosh Gandhe