まず、他のプログラミング言語の使用は許可されていません。純粋なMYSQLでmdYの形式で日付を挿入
文字列の形式の日付がmdY
であるとします。 :10252016
として2016年1月25日までです(先頭の月は1または2の文字の長さであってもよいことを除いて)1252016
は、いずれの場合も10月25日に2016年
で、我々はどちらかとして、月の部分文字列を望みますSUBSTRING("1252016" , 1, 1); => 1
または SUBSTRING("10252016" , 1, 2); => 10
。例えば
:
CONCAT_WS("-",
SUBSTRING("1252016" , -4, 4) ,
SUBSTRING("1252016" , 1, 1) ,
SUBSTRING("1252016" , -6, 2)
); => "2016-1-25"
は条件付きで文字列の先頭から1
または2
文字を取得する方法、またはそうでなければ、文字列の先頭に7
位置からマイナスに読み込むための方法はあり、それを逆にする?
別のプログラミング言語を使用できない理由は、日付がLOAD DATA LOCAL INFILE
でインポートされるためです。そして、私が理解する限り、私はクエリの構造を制御することしかできません。
は何 '1112016'のための正しい結果でしょうか? 2016年11月1日または2016年1月11日? –
@ JoachimIsakssonそれは正しい 'DATE'としてデータベースに挿入するだけです。フォーマットが 'mdY'または' dmY'で始まるかどうかは、どちらかが先頭の 'd/m'を文字長で1または2とする可能性があるため、無関係です。 – Jonathan
@JoachimIsakssonが正しいです。 7桁の番号を持つ多くの場合、日付形式は本質的にあいまいです。現在指定されているデータインポートの作業は成功しません。データソースで2016年5月12日に「12052016」、2016年1月25日に「01252016」と書くことができれば、この仕事をする機会があります。しかし、もしあなたが '1252016'を手に入れれば、2つの違いを区別することはできません。 –