web-dev-qa-db-ja.com

MySQLで文字列を日付に変換する方法

stringとして機能するdate列があり、それをdateとして選択します。

出来ますか?

私のサンプルデータフォーマットはこうなるでしょう。 month/day/year - > 12/31/2011

126
Joseph Lafuente

MySQLは日付フィールドとして日付テキストを含む文字列カラムを使用 で言われたように、あなたはすることができます

SELECT  STR_TO_DATE(yourdatefield, '%m/%d/%Y')
FROM    yourtable

これらの日付文字列をWHERE句で扱うこともできます。例えば

SELECT whatever
  FROM yourtable
 WHERE STR_TO_DATE(yourdatefield, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAYS

このようにして、あらゆる種類の日付/時刻レイアウトを処理できます。 DATE_FORMAT()の2番目のパラメータに何を入力できるかについては、 STR_TO_DATE()関数のフォーマット指定子 を参照してください。

226
bluefoot
STR_TO_DATE('12/31/2011', '%m/%d/%Y')
42
Bala R

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
上のページを使ってMySQLのより多くの関数を参照する

SELECT  STR_TO_DATE(StringColumn, '%d-%b-%y')
FROM    table

例えば、出力を取得するために以下のクエリを使用する

SELECT STR_TO_DATE('23-feb-14', '%d-%b-%y') FROM table

文字列フォーマットの場合は、以下のリンクを使用してください。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

8
Bharathiraja

これはもう2つの例です。

日、月、年を出力するには、次のようにします。

select STR_TO_DATE('14/02/2015', '%d/%m/%Y');

どれが生成されます:

2015-02-14

時間も出力するには、次のようにします。

select STR_TO_DATE('14/02/2017 23:38:12', '%d/%m/%Y %T');

どれが生成されます:

2017-02-14 23:38:12

8
aalhanane