web-dev-qa-db-ja.com

2つの日付の時差を分単位で計算する

MySQLデータベースには、タイムスタンプフィールドがあり、BeanのDATEデータ型にマップされています。ここで、現在のタイムスタンプとデータベースに保存されているタイムスタンプの差が20分を超えるデータベース内のすべてのレコードをフェッチできるクエリが必要です。

どうすればいいですか?

私が欲しいのは:

SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes

これのためのMySQL関数、またはSQLでこれを行う方法はありますか?

66
Akshay

TIMESTAMPDIFF(unit、datetime_expr1、datetime_expr2) のようなものを使用できると思います

select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
110
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
22
Mouloud

これを試してください:

select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()

注:これは、MySQL DateTime形式を使用している場合に機能するはずです。 Unixタイムスタンプ(整数)を使用している場合、さらに簡単になります。

select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60

UNIX_TIMESTAMP()関数は、現在のUNIXタイムスタンプを返します。

6
itsmeee

今日とデータベースの日付に以下のコードを使用しています。

(TIMESTAMPDIFF(MINUTE,NOW(),EndDate))%60 as Minutes

ここでは、HOUR(for hours-%24)、DAY(日-必要なし%)の代わりに必要に応じて。

1
Deepak Dholiyan