日付をdd.mm.yy形式からYYYY-MM-DD形式に変換するmySQL関数はありますか?
例えば、 03.09.13 -> 2013-09-03
。
入力は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')
年は%y
でSTR_TO_DATE
(小文字の「y」)であり、%Y
でDATE_FORMAT
(大文字の「Y」)であることに注意してください。小文字のバージョンは2桁の年、大文字のバージョンは4桁の年です。
使用する
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
には素敵なトリックがあります(そのコードは繰り返さず、より適切に更新されます)
日付は内部形式を使用して保存されます。関数date_format()
を使用して、さまざまな形式を使用して文字列に変換できます。特にあなたのために:
select date_format(`date`, '%Y-%m-%d')