私の使命は、dbaccessのUNLOAD TOステートメントを使用してデータベースからデータをエクスポートし、同様のデータベースに挿入できるファイルに変換することです。
今質問は次のとおりです。
以前のデータベース(DB1と呼ばれる)は、1993年1月1日から数分単位でいくつかの日付を保存します。たとえば、今日は11.980.800分です。次に、その値を取得し、%d.%m.%Y
DATEのみを値として受け入れる新しいデータベース(DB2)の行に合うように形式の日付に変換する必要があります。
DB1からエクスポートされたデータは区別されます^
。他の行に関連するいくつかのステートメントがありますが、すでに作成したif
ように、DATE値を持つ行を処理することはできません。印刷ドアは次のとおりです。
print "INSERT INTO zdv_voa(voa_fnr, voa_kritkz, voa_krit, voa_kz, voa_datv, voa_datb, voa_grund) VALUES("$1",\'"$2"\',\'"$3"\',\'"$4"\',"$5","$6",\'"$7"\');"
と$5
は$6
日付に変換する必要がある方です。
awkスクリプトを実行した後、次の内容を含むファイルが必要です。
INSERT INTO zdv_voa(voa_fnr, voa_kritkz, voa_krit, voa_kz, **voa_datv**, **voa_datb**, voa_grund) VALUES(1,'P','148','T','10.10.2015','02.07.1999','60');
ここで使用された日付は単なる例であり、他の値は私が直接変換したものです。
答え1
エポック以来、1993年1月1日までに何秒かかりましたか?
date -d '01/01/1993' +%s
時間
awkが許可するかどうかをテストできます。strftime()
echo 11980000 | awk '{u=60*$1+725842800 ; printf "%d -> %s\n",u, strftime("%x",u); } '
今回は戻ってください。 10/12/2015
次に、コードに次を追加します。
dollar5=strftime("%x",60*$5+725842800) ;
# $6 is left as an exercice ..
print "INSERT INTO zdv_voa(voa_fnr, voa_kritkz, voa_krit, voa_kz, voa_datv, voa_datb, voa_grund) VALUES("$1",\'"$2"\',\'"$3"\',\'"$4"\',\'"dollar5"\',\'"dollar6"\',\'"$7"\');"