MySQLデータベースに追加する数千行のファイルがあります。行にはdd-mm-yyyy形式の日付値がありますが、yyyy-mm-dd形式である必要があります。
たとえば、'11-04-2010',
はすべての行で'2010-04-11',
になる必要があります。
Notepad ++または別のテキストエディターでこれを行う簡単な方法はありますか?
テキストパッドでこれを行うことができます:
検索:([0-9]+)-+([0-9]+)-+([0-9]+)
交換:\ 3-\2-\1
間違ったフォーマットのみを並べ替えるようにするには(データベースのマージでフォーマットが混在している場合)、これを使用します:
([0-9]{2})-+([0-9]{2})-+([0-9]{4})
これは(4桁、ダッシュ、2桁、ダッシュ、2桁)を検索します。
Notepad ++のような正規表現対応のエディターで、これを次のように置き換えます。
\3-\2-\1
Libre officeのようなツールでは、これを次のように置き換える必要があります。
$3-$2-$1
編集:これは一般的な問題のように思われるため、ブログポストを作成しました: http://bytethinker.com/blog/correct-date-format-with-notepad-and-regex
Notepad ++を使用して、テキストファイルの数行でmm/dd/yyyyをyyyy/mm/ddに変更しました。スクリプトは次のファイルのマクロとして保存されました。
検索:([0-9] {2})/ +([0-9] {2})/ +([0-9] {4})置換:\ 3/\ 1/\ 2
ISO日付形式 "2010-11-30T00:00:00.266Z"のような値で機能する別の堅牢なパターン
ISO日付表現のさまざまな要素のグループをキャプチャする
"(\ d {4})-(\ d {1,2})-(\ d {1,2})T([0-2]\d):([0-5]\d):( [0-5]\d)(?:。\ d +)?Z?\ s? "
合計6つのグループがこのパターンでキャプチャされます。最後の「?:」を含む7番目のグループは非キャプチャです。つまり、グループによって記録された値を保持せず、単にそれらを無視します。
取得した6つのグループには、\ 1\2\3 ...から\ 6までの位置に基づいた番号があります。
その日付をデータベースがサポートする日付形式に変更するための置換パターン。主に- "11/30/2010 00:00:00 AM"などのOracle値で使用されます。
「\ 2/\ 3/\ 1\4:\ 5:\ 6 AM」
Notepad ++ Good Luckでうまく動作します!