1

こんにちは、2 日前からデータベース内のエントリ数の行数を取得しようとしています。現在から 2 日前までのデータを取得する以下のコードがありますが、2 日前の午前 0 時から午前 0 時までのデータベース内のすべてのエントリのデータが必要です。

これは、今から 2 日前までに取得しなければならないコードです。

 SELECT * FROM vistordetails1 WHERE date_time >= ( NOW() - INTERVAL 2880 MINUTE )

私はこのようなことをすることができます

SELECT * FROM vistordetails1 WHERE date_time >= ( INTERVAL 1440 MINUTE - INTERVAL 2880 MINUTE )
4

6 に答える 6

2

閉じて、これを試してみてください...

SELECT * FROM vistordetails1 
WHERE date_time <= ( NOW() - INTERVAL 1440 MINUTE ) 
  AND date_time >= ( NOW() - INTERVAL 2880 MINUTE )

SQL は少し混乱することがあります。これをプログラミング構造で考えてみてください。値が特定の範囲内にある場合は、何かをしたいと考えています。

if(val > 1 && val < 10){
  //value is between 1 and 10 exclusive
}else{
  //value is out side the range
}
于 2013-05-08T01:37:16.610 に答える
1
SELECT *
  FROM visitordetails1
WHERE date_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 DAY) 
                    AND DATE_SUB(CURDATE(), INTERVAL 2 DAY)

SQLフィドル

于 2013-05-08T01:37:56.597 に答える
1

関数を使用してdate()、時間コンポーネントを取り除くことができます。

SELECT *
FROM vistordetails1
WHERE date_time >= ( date(NOW()) - INTERVAL 2880 MINUTE ) and
      date_time < date(now())
于 2013-05-08T01:38:21.123 に答える
0

2 つの日付の間の項目が必要な場合は、最小値と最大値の両方を設定する必要があります。

SELECT * FROM vistordetails1 WHERE date_time >= (NOW() - INTERVAL 2880 MINUTE) AND date_time <=  (NOW() - INTERVAL 1440 MINUTE)
于 2013-05-08T01:38:01.150 に答える
0

いいえ、実際には、時間の開始から 1 日後 (1970 年 1 月 1 日) のエントリが選択されます。次のステートメントを試してください。

SELECT * FROM vistordetails1 
    WHERE date_time <= ( NOW() - INTERVAL 1440 MINUTE ) 
    AND date_time >= ( NOW() - INTERVAL 2880 MINUTE )
于 2013-05-08T01:38:33.397 に答える
0

これは 2 日間を考慮します。

select date(now()) as today, date_add(date(now()), interval -2 day) "2 days ago";

関数 date を使用して、完全な日時の日付部分を取得する方法を説明しています。あなたのニーズに適応すれば、あなたはそこにたどり着きます。

于 2013-05-08T01:41:33.667 に答える