Port 53

明日のための技術メモ

dateコマンド

今日の復習

dateコマンド(GNU date)を使って、先々月の最後の日を正確に出したかった
もちろん、閏年でもいける感じで。 さらに基準の日を変数に格納して、
そのあとに続くSQLにある日付をsedで変えられるようにする必要があった。

やってみた

流れは以下の通り。
当月の1日をとる→先月の1日をとる→先月の1日の前日をとる

# 当月の1日をとる。日付は1日固定にする。
DATE_TODAY=`date '+%Y-%m-01'`

# 先月の1日をとる。変数に格納した日付を使う。
DATE_LMONTH =`date -d "${DATE_TODAY} -1 month" '+%Y-%m-01'`

# 先々月の月末の日付をとる。
DATE_LAST=`date -d "${DATE_LMONTH} -1 days" '+%Y-%m-01'`

ちなみに、検証する時に当月の1日はこのように設定した。
日付指定する時は-dオプションをつける

DATE_TODAY=`date -d "2020/04/01" '+%Y-%m-%d'`

また、変数なしで本日の日付から1ヶ月前を出すなら以下の通り

DATE_LMONTH=`date  -d '+%Y-%m-%d' " -1 month" `

結果はこんな感じ。2020年4月1日を基準に実行してみた。
(ひたすらechoで画面に出すだけ)

日付チェック
先月の1日:2020-03-01
当月の1日:2020-04-01
先々月末:2020-02-29

オリンピックの年何してるんでしょうね

参考

先月の月を取得する
dateコマンドで前月を計算する時の注意(前月に基準日の日付がない場合)