説明する

説明する

「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

関連情報