日付でより大きい演算子を使用するにはどうすればよいですか?


106

ここで何が起こっているのかわかりません。これがphpMyAdminからのクエリです。

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

しかし、開始日が2012-11-01のレコードを含め、テーブル内のすべてのレコードが常に返されます。何ができますか?


1
タイプが日付またはタイムスタンプのstart_date列ですか?
Shamis Shukoor

回答:


190

start_date一重引用符で囲んで文字列にした場合は、backtick代わりに使用してください

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

1
タイムスタンプの場合はどうなりますか?
ichimaru 2018

MySQLは日付形式について少しうるさいように見えることに注意してください。2019/02/08 21:04:07または2019-02-08 21:04:07は期待される結果を生成しますが、02-08-2019 21:04:07は米国の日付形式を使用して、はるかに広いネットをキャストします。
デビッドA.グレイ

22

ステートメントでは、start_dateという文字列を時間と比較しています。start_dateが列の
場合、次のいずれかである必要があります

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(アポストロフィなし)または


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(バックティック付き)。

お役に立てれば。



2

私の場合、私の列はすべてのレコードを取得し続ける日付時刻でした。私がやったことは時間を含めることです、以下の例を参照してください

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

0

私は試しましたが、解決策の下で発見された研究の後、上では機能しません。

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

参照

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.