MySQL テーブルでいくつかの日付を解析しようとしていますが、STR_TO_DATE をうまく再生できません。
SELECT STR_TO_DATE('Tue Feb 12 17:59:59 EET 2013', '%a %b %e %T EET %Y')
null を返します。
EETテキストを無視するにはどうすればよいですか? タイムゾーン情報は必要ありません。
更新: MySQL サーバーのバージョンは 4.1.14 です
4.x では実装されていませんが、パーサーが文字列内の一致したテンプレートをスキップできるため、5.x (5.5.x で試行) でのみ機能すると思います。
次のステートメントを試すことができます。5.x では問題ありませんが、4.x では問題ありません。
SELECT STR_TO_DATE('Tue XX Feb 12 17:59:59 SOME_DATA 2013', '%a XX %b %e %T SOME_DATA %Y')
したがって、最善の方法は、回避策に従うことです (不要な部分文字列を置き換えます)。
補足: MySQL にはタイム ゾーンの概念がありません。そのため、最初の文字列に含まれている場合、MySQL は気にせず、日付変換中に変更を適用しませんUTC, EET, FET
。
%a と %b によって処理される日と月の名前は、サーバー接続のロケール設定によって管理されます。あなたの名前とタイムゾーンから、母国語が ではないユーザーが何人かいると推測しています'en_US'
。
次のコマンドを実行して、ロケール設定を確認します。
SELECT @@lc_time_names;
発行してみるかもしれません
SET lc_time_names = 'en_US';
質問で失敗しているコマンドを発行する直前に、発行します
SET lc_time_names = 'ru_RU';
または、直後にユーザーにとって正しいものは何でも。