WEBサービスを運用していると、様々な管理が発生する。
ログデータ集計や、営利サービスだとデータレポートなども発生するはずだ。
また、サーバー管理をしている人は、バッチ処理として色々なデータ保管処理を行わなければならない。
そんな時のスニペットを1つ作ったので、公開しておきます。
2つの日付から経過日を取得
◯日間の処理を行う際に、「対象日から丸日を経過した」という事を認識する為に、経過日数を取得する時に使って欲しい。
ソースコード
dateDiff.sh
#!/bin/bash
# 開始日の1900/1/1からの秒数を求める
START=`date -d "$1" +%s`
# 終了日の1900/1/1からの秒数を求める
FINISH=`date -d "$2" +%s`
# 終了日 - 開始日 の差分秒を求める
DIFF=`expr $FINISH - $START`
# 秒分時で割ることで日数が求められる(小数点切り捨て)
DAYS=`expr $DIFF / 60 / 60 / 24`
# 結果表示
echo $DAYS
使い方
dateDiff.sh [開始日] [終了日]
※日付は[yyyymmdd]で入力してください。
$ dateDiff.sh 20151201 20160102
> 32
解説
- shellでのクエリ受け取り値は「$1」「$2」で行えるので非常に楽に扱える。
- 開始日と終了日は「date -d "日付" +%s」で1900/1/1からの秒数で取得
- 差分秒数の集計は「expr $TODAY - $FROM」で行う
- 秒数を日数に変換「expr $DIFF / 60 / 60 / 24」※shellは基本整数のみなので、小数点は切り捨てられる
0 件のコメント:
コメントを投稿