「1832-09-02」形式には、「9-2-1832」形式の文字列が必要です。 mysqlで「日付」タイプフィールドを入力できるはずです。
答え1
追加のツールを許可したら(mysqlタグをすべて指定した後)、次のものを使用できます。日付ユーティリティパッケージ:
$ dateconv -i %m-%d-%Y "9-2-1832"
1832-09-02
違いは、GNU date
書式指定子(パラメータ)を使用して入力書式を指定できることです-i
。このようにして、あらゆる種類の日付を解析できます。
標準のISO 8601形式を出力として使用したいので(パッケージ内のすべてのツールのデフォルト値)、そこで何も指定する必要はありません。
免責事項:私はdateutilsの著者です。
答え2
元の日付が月 - 日 - 年(1832年9月2日)であると仮定すると、次のように機能できます。
$ date -d $(sed "s/-/\//g" <<< '9-2-1832') +%Y-%m-%d
1832-09-02
説明する
現在のバージョン8.25では、date
コマンドはリストされた形式(「9-2-1832」、ハイフンで区切られた月 - 年 - 日付文字列)の日付を受け入れません。
$ date -d '9-2-1832' +%Y-%m-%d
date: invalid date ‘9-2-1832’
しかし、date
〜するスラッシュで区切られた月、日、年の日付文字列を受け入れます。
$ date -d '9/2/1832' +%Y-%m-%d
1832-09-02
sed
ハイフンをこのようなスラッシュに置き換えることができます。
$ sed "s/-/\//g" <<< '9-2-1832'
9/2/1832
sed
その後、そのコマンドをサブシェルに入れて、すべてを1つにまとめることができます。
$ date -d $(sed "s/-/\//g" <<< '9-2-1832') +%Y-%m-%d
1832-09-02