データベースにfetcha_pago
「08-Abr-2016」という形式の日付があり、それは varchar です。私が次のことをするとき:
STR_TO_DATE(fecha_pago, '%d-%M-%Y')
日付がスペイン語であるため、機能しません。「Abr」ではなく「Apr」でなければなりません。その月の「Abr」を尊重する方法はありますか?
データベースにfetcha_pago
「08-Abr-2016」という形式の日付があり、それは varchar です。私が次のことをするとき:
STR_TO_DATE(fecha_pago, '%d-%M-%Y')
日付がスペイン語であるため、機能しません。「Abr」ではなく「Apr」でなければなりません。その月の「Abr」を尊重する方法はありますか?
日付を文字列として保存するとあらゆる種類の問題が発生し、ロケールもその 1 つです。これらをISO-8601 形式に変換できる場合YYYY-MM-DD HH:MM:SS
は、DATE
またはDATETIME
列で。
日付の書式設定は、レンダリング先のロケールがわかっている場合にのみ、PHP で行う必要があります。データベース内のすべてのものは、ニュートラルな形式で保存する必要があります。文字列の日付は役に立たない境界線上にあり、並べ替えたりインデックスを付けたりすることはできません。
REPLACE()
各月の名前を書き直すには、おそらく 12 個のステートメントを連鎖させる必要があります。
STR_TO_DATE(REPLACE(REPLACE(fetcha_pago, 'Ene', 'Jan'), 'Abr', 'Apr'), '%d-%M-%Y')
これは 2 つのレベルにすぎませんが、異なるすべてのレベルをカバーするように拡張できます。