2012-05-11 3 views
-1

に基づいてすべての行を今から7日を選択:は、私は、次のフィールドを持つテーブルがあるUNIXタイムスタンプと現在の日付

id - int 
name - int 
the_date - int 

the_dateは、行は、私が今

を添加した場合のUNIXタイムスタンプです今から7日後の1日にすべての行を選択するクエリを作成しようとしています。私はtime()から= 7日間の行を選択することについて話しているわけではなく、time()を使用して現在の日を取得し、time()から7日間である日に挿入されたすべての行を取得するSELECTを実行する必要があります。

私はそれを行う方法を知っています。time()からシンプルな=> SELECTを使って7日以内ですが、それを行う方法がわからないので、その特定の日に7のUNIXタイムスタンプを持つすべての行が選択されます今から)。

ご協力いただければ幸いです。

+0

あなたはつもり今から7日に挿入されたレコードを選択していますか?うわー、私もそのような質問をして、未来を予測してください! – FLY

答えて

0

ポイント、

  • 私は現在DATE、DATETIMEないを取得するにはCURDATE()を使用することができます願っています。
  • iが7日を追加し、次の日の
  • 私は同じその日の開始秒をもたらすUNIX時間に変換
  • 私構造句は、対象日に> =又は等しくなるようにする場合、翌日の開始は<です。これは、目標日を完全にカバーする秒数の範囲を与えます。
  • 列自体の関数を使用しないでください。これは重要です。なぜなら、mysqlはカラムに存在するインデックスを使用してクエリをフルフィルするためです。

where the_date >= unix_timestamp(curdate() + interval 7 day) 
    and the_date < unix_timestamp(curdate() + interval 8 day) 
0
$todayParts = getdate();  
$startToday = mktime(0, 0, 0, $todayParts['mon'], $todayParts['mday'], $todayParts['year']); 
$sevebDaysFromNow = 60 * 60 * 24 * 7; 
$seventhStart = $startToday + $sevebDaysFromNow; 
$seventhEnd = $seventhStart + 60 * 60 * 24; 
$sql = "SELECT * FROM <table> WHERE the_date BETWEEN $seventhStart AND $seventEnd"; 

これは、現在の日の7日後に計算されます。これは、ここでintrestの

+0

私はこれを行う方法を知っています...その日の午前12時から午後12時のように、その日に追加されたすべての行が必要です。 – scarhand

0
SELECT * FROM `dbname1`.`test` 
    WHERE 
    date(FROM_UNIXTIME(`the_date`)) = ADDDATE(DATE(NOW()), INTERVAL 7 DAY); 
+0

これは今から7日後に午前12時から午後12時までのすべての行を選択しますか? – scarhand

+0

'date()'は2012-05-10の日付/時刻の日付部分を取得します。 1日中00:00から23:59まで – codemonkee

関連する問題