web-dev-qa-db-ja.com

MySQL今日記録したテーブルからデータを選択するには?

PHPおよびMySQL。私のテーブルには、NOW()SQL関数によって記録された日付フィールド(datetime)があります。このフィールドのデータの値の例は2010-10-07 10:57:36。day-month-yearが今日であるすべてのデータを選択するにはどうすればよいですか。

  SELECT * FROM table WHERE date=????
16
AJ OP

SELECT * FROM table where DATE(date)=CURDATE()

22

これを試して:

_SELECT * FROM table WHERE date > CURDATE();
_

CURDATE()は、現在の日付を_2011-10-07_として返します。これは、datetimesと比較すると_2011-10-07 00:00:00_にキャストされます。

DATE(date) = CURDATE()を使用する場合、テーブルのevery行に対して日付変換を実行することに注意してください。これは、行数が多い場合や必要な場合にはパフォーマンスに非常に悪いことになります。クエリを頻繁に実行します。また、dateにインデックスがあることを確認してください。そうしないと、両方のメソッドがさらに遅くなります。

27
Kaivosukeltaja
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
3
Bryan

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');

等々。

2
michael667
SET @day = '2017-12-12' ;

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
1
Fredy

これを試して

SELECT * FROM table WHERE DATE(my_date)=DATE(now())

my_date -> column name
1
vivek

私のコードで正確に動作するこのようなものを使用してください(アクセスデータベース):

select * from Table t where t.column>=Date() and t.column< Date() + 1
0
Selman Akdemir