2017-03-17 8 views
0

私たちは予約フォームを用意しています。ユーザーは複数のツアーやツアー日程を予約できます。予約後に注文が作成され、「保留中」状態に設定されます。ツアー日の2週間前に注文を処理したいと考えています。日付を確認するSQLクエリー今日から2週間

私たちはcronジョブ機能を書いており、その意図する目的は「保留中」の状態のすべての注文を取得することであり、ツアー日には正確に2週間の時間があります。

我々はいくつかのトライアルの予約をしたので、これは上記の行は、クエリ

$orders = $wpdb->get_results("SELECT o.*, b.departure_point, b.tour_date, b.tour_id FROM ".CT_TOUR_BOOKINGS_TABLE." b JOIN ".CT_ORDER_TABLE." o ON o.id = b.order_id WHERE o.status = 'pending' AND NOW() + INTERVAL 2 WEEK = b.tour_date"); 

機能していませんされています。声明に間違いはありますか

"NOW() + INTERVAL 2 WEEK = b.tour_date" 

ありがとうございます。

答えて

0

今すぐお試しください()+ 14?私はoracleでsysdate + 14を使ってこのようなものを試してみました。

0

あなたはユーザーこれは取得する必要があり、2週間間隔

DATE_SUB(curdate(), INTERVAL 2 WEEK) 

あなたが必要としてあなたの日付形式を変更することができます

0

"NOW()+ INTERVAL 2 WEEK = b.tour_date"

なければならない

"DATE_ADD(NOW()、INTERVAL 2 WEEK)= b.tour_date"

の代わりに

0

tour_datedatetimeの場合は、NOW() + INTERVAL 2 WEEKと一致しません。時間、分、秒も比較しようとします。 MySQLのDATE機能に

AND DATE(b.tour_date) = DATE(NOW() + INTERVAL 2 WEEK) 

Hereのマニュアル:どのようなあなたが比較する必要があることは、以下を試してみてください、唯一のdate一部です。

+0

おかげで、あまりにもこのコードの動作しますか? DATEDIFF(CURDATE()、b.tour_date)%14 = 0 – Bora

+0

いいえ、それは14,28,42 ..日以降のすべての日付を返します。 –

0

代わりDATEDIFFで試すことができます。

"SELECT o.*, 
     b.departure_point, 
     b.tour_date, 
     b.tour_id 
    FROM ".CT_TOUR_BOOKINGS_TABLE." b 
    JOIN ".CT_ORDER_TABLE." o 
    ON o.id = b.order_id 
    WHERE o.status = 'pending' 
    AND DATEDIFF(b.tour_date, today) = 14" 
関連する問題