Bash

BASH AWK 腳本將天數添加到固定日期

  • October 13, 2015

我的任務是使用 dbaccess 中的 UNLOAD TO 語句從數據庫中導出數據並將其轉換為文件,該文件可以插入到類似的數據庫中。

現在的問題:

舊數據庫(我們稱之為 DB1)中有一些日期,從 1993 年 1 月 1 日開始以分鐘為單位儲存。例如,今天是 11.980.800 分鐘。現在我需要獲取該值並將其轉換為 format 中的日期%d.%m.%Y,因此它適合新數據庫 (DB2) 中的行,該數據庫僅接受 DATE 作為值。

從 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"\');"

where$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');

此處使用的日期只是範例,其他值已由我轉換。

從紀元到 1993 年 1 月 1 日經過了多少秒?

date -d '01/01/1993' +%s

時間

你可以測試你是否允許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"\');"

引用自:https://unix.stackexchange.com/questions/235811