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


149

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

出来ますか?

私のサンプルデータ形式は次のようになります。month/day/year->12/31/2011

回答:


258

言われたとおり、日付フィールドとして日付のテキストの文字列の列を使用した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 DAY

この方法で、あらゆる種類の日付/時刻レイアウトを処理できます。参照してくださいための書式指定DATE_FORMAT()機能を使用すると、の2番目のパラメータに入れることができるものを見るためにSTR_TO_DATE()


6
DAYSではなくINTERVAL 7 DAYにすべきだと思います
Feras Odeh

1
「dd-mmm-yyyy」形式のようなchar列があります。「dd-mm-yyyy」形式でクエリするにはどうすればよいですか?
MAX

51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')

31/11/1015のようなDD / MM / YYYY形式で保存される日付とは何ですか?
Vipul Hadiya 2016年

2
@VipulHadiyaは、日付フォーマット文字列を%d/%m/%Y好きなように変更します。STR_TO_DATE('31/11/1015', '%d/%m/%Y')出力は データタイプYYYY-MM-DDとしてフォーマットされることに注意してくださいDATE
fyrye

1
StackOverflowでは、コードのみの回答は価値が低いです。この正解を改善してください。
mickmackusa

11

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


10

別の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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.