2017-09-28 6 views
1

これはstepsです。日付/時刻タイプの行を選択する正しい方法

+---------------+--------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+---------------+--------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| industry_id | varchar(2) | NO |  | NULL |    | 
| offset  | int(11)  | NO |  | NULL |    | 
| create_date | datetime  | YES |  | NULL |    | 
| flg   | char(1)  | YES |  | NULL |    | 
+---------------+--------------+------+-----+---------+----------------+ 

これらはサンプルデータです(私はほんの少し追加します)。

+--------+-------------+--------+---------------------+------+ 
| id  | industry_id | offset | create_date   | flg | 
+--------+-------------+--------+---------------------+------+ 
| 108587 | 12   |  1 | 2017-09-28 05:43:58 | 1 | 
| 108588 | 12   |  51 | 2017-09-28 05:43:58 | 0 | 
| 108589 | 12   | 101 | 2017-09-28 05:43:58 | 1 | 
| 108590 | 12   | 151 | 2017-09-28 05:43:58 | 0 | 
+--------+-------------+--------+---------------------+------+ 

create_dateで30分前に追加され、flg = 0のデータを選択します。私は別のクエリを試みたが失敗した。

SELECT * 
    FROM steps 
WHERE flg=0 
    and create_date BETWEEN DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND NOW(); 

私はこのクエリを試しましたが、空を返します。

正しいクエリは何ですか?

答えて

1

下回っています。スタイル日付演算INTERVALを使用する場合、DATE_SUB()は必要ありません。

しかし、タイムゾーンの混乱があるかもしれません。このクエリを試してみてください:

SELECT NOW(), steps.create_date, steps.* 
    FROM steps 
    ORDER BY id DESC 
    LIMIT 20 

これは、現在の日付スタンプの横にある最新の20個の行を表示します。 NOW()の値がcreate_dateの列に表示される値に匹敵するかどうかを確認してください。そうでない場合は、その列のデータ型と、この問合せを実行しているクライアント接続に対して行を挿入するクライアント接続のタイムゾーン設定を調べます。

0

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

SELECT * 
FROM steps 
WHERE flg = 0 AND create_date = NOW() - interval 30 minute 
; 

全体の日付と分と秒をチェックします=を使用して、
あなたには、いくつかの範囲が必要な場合 - あなたはbetweenを使用する必要があります:

create_date BETWEEN NOW() - interval 31 minute AND NOW() < interval 30 minute 
-1

この

を使用してみてください
created_date >= DATE_ADD((now(), INTERVAL -15 MINUTE)) AND created_date < now() 

li NKSはおそらく

create_date >= NOW() - INTERVAL 30 MINUTE 

は30分前により新しいレコードを取得したい

adddate() msql

now() mysql

+0

答えでさらにリンクを使用しないでください –

関連する問題