2017-05-30 8 views
0

作成日からN日間非アクティブだったユーザをフェッチしようとしています。タイムスタンプに日付が格納されています。MySQLは作成日からn日間、非アクティブなユーザを取得します

SELECT name, created, accessed 
FROM users 
WHERE accessed >= DATE(NOW() - INTERVAL 3 DAY) 

しかし、それは本当に私のために働いていません。 createdからN日間有効ではなかった非アクティブなユーザーを取得するためのクエリを作成する方法を理解できません。最後のアクセスは、3日前、その後長かった

+0

はあなたのDDL、サンプルデータと予想される出力 – Jens

+0

誤植を表示しますか? 'WHERE AND'は' AND'が間違っています – Marcus

+0

Typo。編集して余分に追加 – user256968

答えて

1

ショーユーザー:

SELECT 
    name, 
    created, 
    accessed 
FROM users 
WHERE ABS(TIMESTAMPDIFF(DAY, NOW(), accessed)) > 3 
+0

解決策を説明してコードを入力しないでください – Jens

+0

OPは質問の例SQLにもかかわらず、作成日とアクセス日を比較したいです –

+0

今私は混乱しています: 'timestampdiff(DAY、created、a)を使用します。 ccessed) 'を使用して、作成と最終アクセスの差分を取得します。最後のアクセスと今のところのdiffを取得するには 'timestampdiff(DAY、accessible、NOW())'を使います。次に、この値を 'Where'-Partの' N'と比較することができます – Marcus

-1

()列createdで今すぐ変更してみてください。そのようにして、アクセスしたユーザーが作成された日付と3日以上のユーザーを探しています。

SELECT 
    name, 
    created, 
    accessed 
FROM users 
WHERE accessed >= DATE(created + INTERVAL 3 DAY) 
0

あなたはcreated列にN日を追加し、accessed列に一致させることにより、非アクティブなユーザーを取得するためにDATE_ADD()を使用することができます。

SELECT name, created, accessed 
FROM users 
WHERE accessed >= DATE_ADD(created, INTERVAL 3 DAY) 

DATE_SUB()は、タイムスタンプでフォーマットさ指定された日付の時間、日、年などを追加するために使用しますと例であってもよいです。現在の日付

にアクセス - - この機能に関するさらなる研究のために

私はあなたがここで行うことができますね https://www.w3schools.com/sql/func_date_add.asp

0

こちらを参照してくださいすることは

SELECT * from users where DATEDIFF(CURDATE(),accessed) > 3 

CURDATE()で最後アカウントにアクセスしました

3 - 日数の違い。

それが役に立てば幸い:)

関連する問題