web-dev-qa-db-ja.com

SQL日付形式の変換? [dd.mm.yyからYYYY-MM-DD]

日付をdd.mm.yy形式からYYYY-MM-DD形式に変換するmySQL関数はありますか?

例えば、 03.09.13 -> 2013-09-03

11
user2216190

入力は03.09.13形式の文字列であるため、(今日は2013年9月3日であるため)dd.mm.yyであると想定します。 STR_TO_DATE を使用して、日付に変換できます。

STR_TO_DATE(myVal, '%d.%m.%y')

次に、 DATE_FORMAT を使用して文字列にフォーマットし直すことができます。

DATE_FORMAT(STR_TO_DATE(myVal, '%d.%m.%y'), '%Y-%m-%d')

年は%ySTR_TO_DATE(小文字の「y」)であり、%YDATE_FORMAT(大文字の「Y」)であることに注意してください。小文字のバージョンは2桁の年、大文字のバージョンは4桁の年です。

37
Ed Gibbs

使用する

SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))

フィドル デモ

対応する manual page で読むことができるフォーマットの詳細。ヒント:これが非日時フィールドからの変換値に関する場合-代わりにDATE/DATETIMEデータ型を使用することをお勧めします。ただし、これは文字列関数を介して日付を操作するのは悪い考えです。上のSTR_TO_DATEには素敵なトリックがあります(そのコードは繰り返さず、より適切に更新されます)

4
Alma Do

日付は内部形式を使用して保存されます。関数date_format()を使用して、さまざまな形式を使用して文字列に変換できます。特にあなたのために:

select date_format(`date`, '%Y-%m-%d')
1
Gordon Linoff