2011-10-07 23 views
11

PHPとMySQLを使用してください。私のテーブルには、NOW()SQL関数で記録された日付フィールド(datetime)があります。このフィールドのデータの値の例は2010-10-07 10:57:36です。今日の1ヶ月のデータをすべてどのようにSELECTすることができますか?私は以下のようにコードを使用しようとします:MySQL今日記録されたテーブルからデータを選択する方法は?

SELECT * FROM table WHERE date=???? 

答えて

17

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

+1

Kaivosukeltajaのソリューションは、パフォーマンスの点からより良いかもしれませんが、 –

+1

メッセージ195、レベル15、状態10、行6 'CURDATE'は認識された組み込み関数名ではありません。 –

+1

'DATE'は認識された組み込み関数名ではありません。 –

-2

の間で使用してください。

select * from table date between '2010-10-06' and '2010-10-08'; 
+1

は、ユーザーが自分のページを開いた日を意味Uh..today 2010-10-08ではありません。ところで、ありがとうdenolk。 –

26

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

SELECT * FROM table WHERE date > CURDATE(); 

CURDATE()がそれにdatetime Sを比較する際に2011-10-07 00:00:00にキャストされます2011-10-07として現在の日付を返します。あなたがDATE(date) = CURDATE()を使用している場合、あなたは多くの行を有し、および/またはあなたが頻繁にクエリを実行する必要がある場合は、あなたもパフォーマンスのために本当に悪いされる、テーブル内のすべての行の日付の変換を実行することを

は注意してください。また、インデックスがdateであることを確認してください。そうしないと、両方の方法がさらに遅くなります。

+0

クエリの末尾に挿入するとセミコロンが壊れる可能性があります。 –

+0

'CURDATE'は認識された組み込み関数名ではありません。 –

+0

@PradeepKumarPrabaharan:それはMySQLのエラーのようには聞こえません。おそらくあなたはMSSQLを実行していますか?代わりに 'GETDATE()'を試してください。 – Kaivosukeltaja

3
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW()); 
2

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

のように。

+0

'date_format'は認識された組み込み関数名ではありません。 –

1

それはまさに私のコードで動作します。このような何か(Accessデータベース)この

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

my_date -> column name 
+1

これは5年前の回答と同じです。 –

0

使用してみてください:、

select * from Table t where t.column>=Date() and t.column< Date() + 1 
1
SET @day = '2017-12-12' ; 

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY) ; 
関連する問題