私のデータベースには、fetcha_pago
という形式の日付があります。「08-Abr-2016」であり、それはvarcharです。私が次のことをするとき:varcharをphp mysqlの日付に変換するには?
STR_TO_DATE(fecha_pago, '%d-%M-%Y')
日付がスペイン語であるために動作しません。それは "Abr"の代わりに "Apr"でなければなりません。その月の "Abr"を尊重する方法はありますか?
私のデータベースには、fetcha_pago
という形式の日付があります。「08-Abr-2016」であり、それはvarcharです。私が次のことをするとき:varcharをphp mysqlの日付に変換するには?
STR_TO_DATE(fecha_pago, '%d-%M-%Y')
日付がスペイン語であるために動作しません。それは "Abr"の代わりに "Apr"でなければなりません。その月の "Abr"を尊重する方法はありますか?
文字列として日付を格納すると、さまざまな問題が発生し、ロケールもその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()
文一緒にチェーンする必要があります。
この解決策は、STR_TO_DATE(REPLACE(fetcha_pago、 'Ene'、 'Jan')、 'Abr'、 'Apr')、 '%d-%M-%Y'すべての月を交換する必要がありますか?または変化するものだけ? –
変更するだけです。偶然に同じものがある場合は、それらをスキップすることができます。拡張版はかなり巨大なので、私はそれを残しましたが、そのパターンを繰り返してください。 – tadman
ありがとうございます。あなたは私を助けてくれる=) –