2016-12-29 10 views
0

私は、タイムスタンプ2016-12-28T21:42:53.000-04:00の次のようなエントリがCHARフィールドとして提供されているMySQLテーブルを使用しています。 私がする必要がある作業の1つは、現在の日付のすべてのレコードを取得することです。MySQLで文字列を日付として操作しますか?

今私がやっていることは、変数($date)に現在の日付をMySQLテーブルのものと同じ形式にすることです。 ie 2016-12-28と一致するすべてのレコードを検索するには、LIKEステートメントを使用します。

たとえば、過去10日間のすべてのレコードを検索する必要があるときに問題が発生します。

このフィールドを有効な日付に変換して、過去10日間のようなより複雑なクエリに使用できるものはありますか?

右方向への任意の先端はあなただけの日付に変換することができ、 おかげ

答えて

4

を理解されるであろう。

where date(left(field, 10)) >= date_sub(curdate(), interval 10 day) 

しかし:私はこれはwhere句で同じようにうまくいくことを追加する必要があります

select date(left(field, 10)) 

:一つの方法です。 。 。列の関数を使用すると、索引の使用が排除されます。この場合、あなたは良い日付形式を持っているので、あなたが行うことができます:

where field >= date_format(date_sub(curdate(), interval 10 day), '%Y-%m-%d') 

このバージョンはfieldのインデックスを利用することができます。

すべてのことです。 。 。適切なタイプを使用してフィールドを格納することを強くお勧めします。

+0

ありがとうございましたGordon! – JordanBelf

+0

これを見つけた他の人には、私は上記の10日間の 'select date(left(date_created、10))からFROM orders where where(left(date_created、10))> = DATE_ADD (CURDATE()、INTERVAL -10 DAY) '[link](http://stackoverflow.com/questions/1713056/mysql-select-last-few-days) – JordanBelf

関連する問題