2017-08-16 25 views
0

MySQLにdatetimeとして格納されたdate_addedという列のテーブルがあります。 データベースに追加されてから24時間以上経過した行を返したいとします。DATEDIFF()を使用して、追加されてから24時間以上経過した行を返す方法

私は次のクエリを使用しています。しかし、それは私がそれが戻ってほしいものを返さない。

SELECT * FROM campaign WHERE datediff(date_added,NOW())>=1 

ここでは、データベース内date_addedは次のようになります。2017-08-15 00:48:31

答えて

0

あなたは私の更新時間

による差分を作っ見ることができるようにあなたがこのよう

//This code is for SQL 
SELECT *, DATEDIFF(HOUR,date_added,NOW()) AS Hours 
FROM campaign WHERE DATEDIFF(HOUR,date_added,NOW()) >=24 

それを行うことができます

これを以下に試してみてください。

SELECT * FROM campaign 
WHERE HOUR(TIMEDIFF(DATE_FORMAT(date_added, "%Y-%m-%d %H:%i:%s"), DATE_FORMAT(NOW(), "%Y-%m-%d %H:%i:%s"))) >= 24 

私はTimeDiffを使用してDATEFORMAT を使用し、時間にしました。

また、「差分」のいずれかの種類を使用しないでください。このクエリ

SELECT * FROM campaign WHERE TIMESTAMPDIFF(HOUR, date_added, NOW()) >= 24 
+0

#1582:CURDATE()以来

WHERE date_added < NOW() - INTERVAL 1 DAY WHERE date_added < NOW() - INTERVAL 24 HOUR 

今朝深夜で、これは昨日や今日いつでも実行何かをキャッチしますDATEIFF()の2つのパラメータをサポートしています – Sometimes

+0

私の悪い、それはSQLだけでした。以下の更新されたクエリを確認してください – OzLa

+0

ええ、それはまだ同じエラーを与える! :/ – Sometimes

0

を使用することができます。どちらも、24時間以上前に「追加」された行に一致します。 - 私は、MySQLだけだと思う​​ネイティブ関数「DATEDIFF」 への呼び出しで誤ったパラメータ数

WHERE date_added < CURDATE() - INTERVAL 1 DAY 
関連する問題