2010-12-06 7 views
1

私は、これは明白ですけど、私の日付時刻行がテキストタイプである、と私はしているレコードを取得する方法を見つけ出すことはできません。時間範囲内で作成されたMySQLレコードを取得しますか?

存在

までの日付以降に挿入

  • - OR -

    特定の日に挿入

失敗した試みのいくつか:

SELECT * FROM posts WHERE DATE(date)=DATE(NOW()) // To get today's posts 
SELECT * FROM posts WHERE date>=CURDATE() // Still doesn't work. 

P.日付行はDateTime形式ですが、TEXT形式です。

おかげ

+3

明白な疑問について申し訳ありませんが... 'TEXT'列の日付を格納するメリットは何ですか? –

+0

あなたのテーブルに日付のようなもののサンプルを投稿できますか? – grahamparks

+0

可能な場合は可能ですが、別の形式で保存します。 Álvaroの答えを使用してそれを有効にすることは可能ですが、大規模なデータセットではこれはひどく非効率的になります。 –

答えて

2

日付に文字列を解析する機能はSTR_TO_DATE()である:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date

それは形式が固定され、知られていることを前提としています。私はそれが事実かどうかわからない。

+0

単純な 'CAST fieldname AS DATE'だけで十分です。 –

+1

@Pekka:日付がサポートされている形式(YYYY-MM-DD)で保存されている場合にのみ、TEXTフィールドに保存される理由はまだ有効です。それ以外の場合は、STR_TO_DATE ... –

+0

@OMGを使用する必要があります。「日付行はDateTime形式で、TEXT形式です。」 –

0

使用コンバート - http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

SELECT * FROM posts WHERE convert(date, datetime) >= CURDATE() 
+1

日付がサポートされている形式で格納されている場合のみ:YYYY-MM-DD。それ以外の場合は、STR_TO_DATEを使用する必要があります... –

関連する問題