MySQLデータベースには、タイムスタンプフィールドがあり、BeanのDATE
データ型にマップされています。ここで、現在のタイムスタンプとデータベースに保存されているタイムスタンプの差が20分を超えるデータベース内のすべてのレコードをフェッチできるクエリが必要です。
どうすればいいですか?
私が欲しいのは:
SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
これのためのMySQL関数、またはSQLでこれを行う方法はありますか?
TIMESTAMPDIFF(unit、datetime_expr1、datetime_expr2) のようなものを使用できると思います
select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
これを試してください:
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タイムスタンプを返します。
今日とデータベースの日付に以下のコードを使用しています。
(TIMESTAMPDIFF(MINUTE,NOW(),EndDate))%60 as Minutes
ここでは、HOUR(for hours-%24)、DAY(日-必要なし%)の代わりに分必要に応じて。