2016-04-19 13 views
1

私のデータベースには、fetcha_pagoという形式の日付があります。「08-Abr-2016」であり、それはvarcharです。私が次のことをするとき:varcharをphp mysqlの日付に変換するには?

STR_TO_DATE(fecha_pago, '%d-%M-%Y') 

日付がスペイン語であるために動作しません。それは "Abr"の代わりに "Apr"でなければなりません。その月の "Abr"を尊重する方法はありますか?

答えて

0

文字列として日付を格納すると、さまざまな問題が発生し、ロケールもその1つです。これらをISO-8601 formatに変換することができる場合は、DATEまたはDATETIMEの列にYYYY-MM-DD HH:MM:SSを入力してください。

日付の書式設定は、PHPで、レンダリングするロケールが分かっている場合にのみ行う必要があります。データベースの内容は中立的な形式で保存する必要があります。文字列の日付は境界線が無駄で、並べ替えや索引付けはできません。ちょうど2つのレベルだ

STR_TO_DATE(REPLACE(REPLACE(fetcha_pago, 'Ene', 'Jan'), 'Abr', 'Apr'), '%d-%M-%Y') 

を、しかし、あなたは異なっていることがすべてのそれらをカバーするために拡張することができます。

おそらく、各月名を再書き込みするために12のREPLACE()文一緒にチェーンする必要があります。

+0

この解決策は、STR_TO_DATE(REPLACE(fetcha_pago、 'Ene'、 'Jan')、 'Abr'、 'Apr')、 '%d-%M-%Y'すべての月を交換する必要がありますか?または変化するものだけ? –

+0

変更するだけです。偶然に同じものがある場合は、それらをスキップすることができます。拡張版はかなり巨大なので、私はそれを残しましたが、そのパターンを繰り返してください。 – tadman

+0

ありがとうございます。あなたは私を助けてくれる=) –

関連する問題