サイト内検索:
mdate : 日付、週、月の処理
使い方とオプション
DIRECT-MODE
日付
mdate <yyyymmdd> : 日付
mdate -y <yyyymmdd> : 曜日
mdate -w <yyyymmdd> : 週
mdate <yyyymmdd>/±<dif> : <dif> 日先の日付
mdate -e <yyyymmdd>/±<dif> : <dif> 日先までの日付を連続出力
mdate <yyyymmdd1> <yyyymmdd2> : 日付の差
mdate -e <yyyymmdd1> <yyyymmdd2> : 日付の範囲を連続出力
mdate -ly <yyyymmdd> : 前年同日
mdate -lyw <yyyymmdd> : 前年同曜日(364日前)
週次
mdate <yyyyww>w : 週
mdate -d <yyyyww>w : 日付を7日間出力
mdate <yyyyww>w/±<dif> : <dif> 週先の週
mdate -e <yyyyww>w/±<dif> : <dif> 週先までの週を連続出力
mdate <yyyyww1>w <yyyyww2>w : 週の差
mdate -e <yyyyww1>w <yyyyww2>w : 週の範囲を連続出力
mdate -ly <yyyyww>w : 前年週
月次
mdate <yyyymm>m : 月
mdate -d <yyyymm>m : 日付を1カ月分出力
mdate <yyyymm>m/±<dif> : <dif> 月先の月
mdate -e <yyyymm>m/±<dif> : <dif> 月先までの月を連続出力
mdate <yyyymm1>m <yyyymm2>m : 月の差
mdate -e <yyyymm1>m <yyyymm2>m : 月の範囲を連続出力
mdate -ly <yyyymm>m : 前年月
FILTER-MODE
日付
mdate -f -y <f> : 曜日
mdate -f -w <f> : 週
mdate -f <f>/±<dif> : <dif> 日先の日付
mdate -f -e <f>/±<dif> : <dif> 日先の日付まで展開
mdate -f <f1> <f2> : 日付の差
mdate -f -e <f1> <f2> : 日付間の展開
mdate -f <f1> +<f2> : 日付の加算
mdate -f -e <f1> +<f2> : 日付の加算展開
mdate -f -ly <f> : 前年日
mdate -f -lyw <f> : 前年同曜日
週次
mdate -f -d <f>w : 日付を1週分出力
mdate -f <f>w/±<dif> : <dif> 週先の週
mdate -f -e <f>w ±<dif> : <dif> 週先の週まで展開
mdate -f <f1>w <f2>w : 週の差
mdate -f -e <f1>w <f2>w : 週の展開
mdate -f <f>w +<f2> : 週の加算
mdate -f -e <f>w +<f2> : 週の加算展開
mdate -f -ly <f>w : 前年週
月次
mdate -f -d <f>m : 日付を1カ月分出力
mdate -f <f>m/±<dif> : <dif> 月先の月
mdate -f -e <f>m ±<dif> : <dif> 月先の月まで展開
mdate -f <f1>m <f2>m : 月の差
mdate -f -e <f1>m <f2>m : 月の展開
mdate -f <f>m +<f2> : 月の加算
mdate -f -e <f>m +<f2> : 月の加算展開
mdate -f -ly <f>m : 前年月
日付、曜日、月を出力
$ mdate 20090912
20090912 <-- そのまま出力
$ mdate -y 20090912
6 <-- 1:月 2:火 3:水 4:木 5:金 6:土 7:日
$ mdate 200909m
200909 <-- そのまま出力
$ mdate -d 200909m
20090901 20090902 20090903 .... 20090927 20090928 20090929 20090930
<dif> 先の日付、月を出力
$ mdate 20090912/+5
20090917
$ mdate 200909m/+5
201002
<dif> 先までの連続した日付、月を出力
$ mdate -e 20090912/+5
20090912 20090913 20090914 20090915 20090916 20090917
$ mdate -e 20090912/-5 <-- 小さい日から順に出力
20090907 20090908 20090909 20090910 20090911 20090912
$ mdate -e 200909m/+5
200909 200910 200911 200912 201001 201002
$ mdate -e 200909m/-5 <-- 小さい月から順に出力
200904 200905 200906 200907 200908 200909
日付、月の差を出力
$ mdate 20090917 20090912
5
$ mdate 201002m 200909m
5
日付、月の範囲を連続出力
$ mdate -e 20090912 20090917
20090912 20090913 20090914 20090915 20090916 20090917
$ mdate -e 20090917 20090912 <-- 小さい日から順に出力
20090912 20090913 20090914 20090915 20090916 20090917
$ mdate -e 200909m 201002m
200909 200910 200911 200912 201001 201002
$ mdate -e 201002m 200909m <-- 小さい月から順に出力
200909 200910 200911 200912 201001 201002
日付、月を挿入
$ cat date_data
A 20090901 B
A 20090902 B
A 20090903 B
$ mdate -f -y 2 date_data <-- 曜日の挿入
A 20090901 2 B
A 20090902 3 B
A 20090903 4 B
$ cat month_data
A 200909 B
A 200910 B
A 200911 B
$ mdate -f -d 2m month_data
A 200909 20090901 ... 20090927 20090928 20090929 20090930 B
A 200910 20091001 ... 20091027 20091028 20091029 20091030 20091031 B
A 200911 20091101 ... 20091127 20091128 20091129 20091130 B
<dif> 先の日付、月を挿入
$ cat date_data
A 20090901 B
A 20090902 B
A 20090903 B
$ mdate -f 2/+5 date_data
A 20090901 20090906 B
A 20090902 20090907 B
A 20090903 20090908 B
$ mdate -f 2/-5 date_data
A 20090901 20090827 B
A 20090902 20090828 B
A 20090903 20090829 B
$ cat month_data
A 200909 B
A 200910 B
A 200911 B
$ mdate -f 2m/+5 month_data
A 200909 201002 B
A 200910 201003 B
A 200911 201004 B
$ mdate -f 2m/-5 month_data
A 200909 200904 B
A 200910 200905 B
A 200911 200906 B
<dif> 先までの連続した日付、月を挿入
$ cat date_data
A 20090901 B
A 20090902 B
A 20090903 B
$ mdate -f -e 2/+5 date_data
A 20090901 20090902 20090903 20090904 20090905 20090906 B
A 20090902 20090903 20090904 20090905 20090906 20090907 B
A 20090903 20090904 20090905 20090906 20090907 20090908 B
$ mdate -f -e 2/-5 date_data
A 20090827 20090828 20090829 20090830 20090831 20090901 B
A 20090828 20090829 20090830 20090831 20090901 20090902 B
A 20090829 20090830 20090831 20090901 20090902 20090903 B
$ cat month_data
A 200909 B
A 200910 B
A 200911 B
$ mdate -f -e 2m/+5 month_data
A 200909 200910 200911 200912 201001 201002 B
A 200910 200911 200912 201001 201002 201003 B
A 200911 200912 201001 201002 201003 201004 B
$ mdate -f -e 2m/-5 month_data
A 200904 200905 200906 200907 200908 200909 B
A 200905 200906 200907 200908 200909 200910 B
A 200906 200907 200908 200909 200910 200911 B
日、月の差を挿入
$ cat date_data2
A 20091001 20090901 B
A 20091003 20090902 B
A 20091005 20090903 B
$ mdate -f 2 3 date_data2
A 20091001 20090901 30 B
A 20091003 20090902 31 B
A 20091005 20090903 32 B
$ cat month_data2
A 200909 200810 B
A 200911 200811 B
A 201001 200812 B
$ mdate -f 2m 3m month_data2
A 200909 200810 11 B
A 200911 200811 12 B
A 201001 200812 13 B
日、月の差を展開挿入
$ cat date_data2
A 20090905 20090901 B
A 20090904 20090902 B
A 20090906 20090903 B
$ mdate -f -e 2 3 date_data2
A 20090905 20090901 20090901 20090902 20090903 20090904 20090905 B
A 20090904 20090902 20090902 20090903 20090904 B
A 20090906 20090903 20090903 20090904 20090905 20090906 B
$ cat month_data2
A 200901 200810 B
A 200903 200811 B
A 200904 200812 B
$ mdate -f -e 2m 3m month_data2
A 200901 200810 200810 200811 200812 200901 B
A 200903 200811 200811 200812 200901 200902 200903 B
A 200904 200812 200812 200901 200902 200903 200904 B
日付、月を加算して挿入
$ cat date_data4
A 20090901 1 B
A 20090902 2 B
A 20090903 3 B
$ mdate -f 2 +3 date_data4
A 20090901 1 20090902 B
A 20090902 2 20090904 B
A 20090903 3 20090906 B
$ cat month_data4
A 200911 1 B
A 200912 2 B
A 201001 3 B
$ mdate -f 2m +3 month_data4
A 200911 1 200912 B
A 200912 2 201002 B
A 201001 3 201004 B
日付、月を加算展開して挿入
$ cat date_data4
A 20090901 1 B
A 20090902 2 B
A 20090903 3 B
$ mdate -f -e 2 +3 date_data4
A 20090901 1 20090901 20090902 B
A 20090902 2 20090902 20090903 20090904 B
A 20090903 3 20090903 20090904 20090905 20090906 B
$ cat month_data4
A 200911 1 B
A 200912 2 B
A 201001 3 B
$ mdate -f -e 2m +3 month_data4
A 200911 1 200911 200912 B
A 200912 2 200912 201001 201002 B
A 201001 3 201001 201002 201003 201004 B
<週機能について>
MDWEEKTABLE は週番号を管理するテーブルで、日付と週番号からなる2フィールドのファイルです。日付は連続している必要が有り、7行で1週間分になります。週番号は1〜7桁の任意の整数です。すべての週番号が同じ桁数でなければなりませんが、連続している必要はなく。昇順でなくても構いません。
MDWEEKTABLE.SAMPLE がサンプルとして提供されています。このファイルは「月曜開始、3月1日が含まれる週を第1週」という条件で作成されたものです。会社や業種によって条件が違うので注意してください。
$ head ~/TBL/MDWEEKTABLE
20050228 200501
20050301 200501
20050302 200501
20050303 200501
20050304 200501
20050305 200501
20050306 200501
20050307 200502
20050308 200502
20050309 200502
週番号を表示
$ mdate 200901w
200901 <-- そのまま出力
$ mdate -d 200901w
20090223 20090224 20090225 20090226 20090227 20090228 20090301
週の計算
$ mdate 200907w/+5
200912
<dif>先までの連続した週番号を表示
$ mdate -e 200909w/+5
200909 200910 200911 200912 200913 200914
$ mdate -e 200909w/-5 <-- 小さい週から順に出力
200904 200905 200906 200907 200908 200909
週の差を出力
$ mdate 200909w 200902w
7
週の範囲を連続出力
$ mdate -e 200909w 200907w
200907 200908 200909
$ mdate -e 200907w 200909w <-- 小さい週から順に出力
200907 200908 200909
フィルターモードも同様に動作します。
<yyyymmdd> には、“today”、“yesterday”、“yday”、“tomorrow”、“nday” を指定することもできます。
<yyyyww> には、“thisweek” を指定することもできます。
<yyyymm> には、“thismonth” を指定することもできます。
週の機能は MDWEEKTABLE が存在するときのみ動作します。
Version : Thu Jan 14 21:51:32 JST 2021
Edition : 2
© 2021 Universal Shell Programming Laboratory site