2017-06-07 7 views
-3

緯度経度と日付に応じてレコードを検索するクエリがあります。日付から15分を加算して差し引く方法

クエリは同じ日付で正常に動作しますが、日付の15分前と15分後のレコードを取得したいとします。

の作業の問合せこのです:

SELECT 
    * 
FROM post 
WHERE st_lati LIKE '19.878454%' AND st_longi LIKE '73.836708%' 
AND ed_lati LIKE '20.012709%' AND ed_longi LIKE '73.791389%' 
AND pt_date LIKE '2017-05-30 06:30%' 

私はDATEADD関数が、その与えてエラーを使用しようとしたマイナス15分。

私の試み

SELECT 
* 
FROM post 
WHERE pt_date DATEADD(minute, -15 * @h - @m, pt_date) 
AND st_lati LIKE '19.878454%' 
AND st_longi LIKE '73.836708%' 
AND ed_lati LIKE '20.012709%' 
AND ed_longi LIKE '73.791389%' 

私はどこpt_date 15分前と15分後にレコードを取得したいです。

+1

1.エラーが発生した場合は、あなたの質問にそのまま引用してください。 2.比較演算子がありません。ここでは、 'WHERE pt_date DATEADD(...)' – CBroe

答えて

0

はこれを試してみてください:

SELECT 
* 
FROM post 
WHERE st_lati LIKE '19.878454%' 
    AND st_longi LIKE '73.836708%' 
    AND ed_lati LIKE '20.012709%' 
    AND ed_longi LIKE '73.791389%' 
    AND pt_date BETWEEN '2017-05-30 06:30:00' - INTERVAL 15 MINUTE AND 
    '2017-05-30 06:30:00' + INTERVAL 15 MINUTE 
+0

$ params = array( "$ st_lati%"、 "$ st_longi%"、 "$ ed_lati%"、 "$ ed_longi% $ pt_date);私はこれのためにバインドされたパラメータのエラーを取得しています、パラメータの数は一致しません。 @ReneS – Sid

+0

はい、今度は2度渡されたクエリ – ReneS

+0

で2回使用されているので、 'pt_date'を2度渡す必要があります。 – Sid

0

私はこのあなたがISO形式の日付を持っているものの一種、またはそれに近いためUNIX_TIMESTAMP()関数を使用します。これは、あなたが数秒で作業することができます(その15分60 * 15です):

あなたwhere句の関連部分は次のようになります。

あなたは数分で違いを使用することができます

AND UNIX_TIMESTAMP(pt_date) BETWEEN UNIX_TIMESTAMP('2017-05-30 06:30')-60*15 AND UNIX_TIMESTAMP('2017-05-30 06:30')+60*15;

+0

Oops、yes、corrected –

0

。クエリは次のようになります:

SELECT 
* 
FROM post 
WHERE st_lati LIKE '19.878454%' 
    AND st_longi LIKE '73.836708%' 
    AND ed_lati LIKE '20.012709%' 
    AND ed_longi LIKE '73.791389%' 
    AND ABS(TIMESTAMPDIFF(MINUTE, pt_date, '2017-05-30 06:30')) <= 15; 
+0

日付の15分後にもレコードが必要です。 – Sid

+0

その場合、ABS()関数を使用できます。 – elyor

+0

時間が6:30の場合6:18,6:15,6:55のレコードがうまく機能しない – Sid

関連する問題