PHPおよびMySQL。私のテーブルには、NOW()SQL関数によって記録された日付フィールド(datetime)があります。このフィールドのデータの値の例は2010-10-07 10:57:36。day-month-yearが今日であるすべてのデータを選択するにはどうすればよいですか。
SELECT * FROM table WHERE date=????
SELECT * FROM table where DATE(date)=CURDATE()
これを試して:
_SELECT * FROM table WHERE date > CURDATE();
_
CURDATE()
は、現在の日付を_2011-10-07
_として返します。これは、datetime
sと比較すると_2011-10-07 00:00:00
_にキャストされます。
DATE(date) = CURDATE()
を使用する場合、テーブルのevery行に対して日付変換を実行することに注意してください。これは、行数が多い場合や必要な場合にはパフォーマンスに非常に悪いことになります。クエリを頻繁に実行します。また、date
にインデックスがあることを確認してください。そうしないと、両方のメソッドがさらに遅くなります。
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
date_format
関数を使用すると、さまざまな粒度を簡単に切り替えることができます。
同じ日からすべてを選択します。
select * from table
where date_format(date, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d');
同じ月から:
select * from table
where date_format(date, '%Y-%m') = date_format(now(), '%Y-%m');
同じ年から:
select * from table
where date_format(date, '%Y') = date_format(now(), '%Y');
同じ時間から:
select * from table
where date_format(date, '%Y-%m-%d %H') = date_format(now(), '%Y-%m-%d %H');
等々。
SET @day = '2017-12-12' ;
SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
これを試して
SELECT * FROM table WHERE DATE(my_date)=DATE(now())
my_date -> column name
私のコードで正確に動作するこのようなものを使用してください(アクセスデータベース):
select * from Table t where t.column>=Date() and t.column< Date() + 1