0

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

3 に答える 3

3

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

于 2013-02-14T10:52:14.980 に答える
-1

%a と %b によって処理される日と月の名前は、サーバー接続のロケール設定によって管理されます。あなたの名前とタイムゾーンから、母国語が ではないユーザーが何人かいると推測しています'en_US'

次のコマンドを実行して、ロケール設定を確認します。

  SELECT @@lc_time_names;

発行してみるかもしれません

 SET lc_time_names = 'en_US';

質問で失敗しているコマンドを発行する直前に、発行します

 SET lc_time_names = 'ru_RU';

または、直後にユーザーにとって正しいものは何でも。

于 2013-02-13T16:51:10.390 に答える