my $SQL = "UPDATE kcrei_batch_job_history SET
rows_added = $_[1],
status = 'C',
stop_datetime = getdate(),
stop_tran_seq_nbr = $hdr_tran_seq_nbr,
elapsed_time_hh = datediff(hh, convert(datetime,$loader_start_time), getdate())
elapsed_time_mm = datediff(mi, convert(datetime,$loader_start_time), getdate()),
elapsed_time_ss = datediff(ss, convert(datetime,$loader_start_time), getdate())
WHERE
master_job_no = $master_job_no AND
master_job_sub_no = $_[0]";
####
my @f = (localtime)[0..5];
my $stop_time = sprintf "%d-%02d-%02d %02d:%02d:%02d", $f[5]+1900, $f[4]+1, $f[3], $f[2], $f[1], $f[0];
Compute the elapsed time in hours, minutes and seconds.
my $elapsed_time_ss = sprintf "%02d", timeDiff($loader_start_time, $stop_time);
my $elapsed_time_mm = sprintf "%02d", $elapsed_time_ss / 60;
my $elapsed_time_hh = sprintf "%02d", $elapsed_time_ss / 3600;
$stop_time .= ".000";
my $SQL = "UPDATE kcrei_batch_job_history SET
rows_added = $_[1],
status = 'C',
stop_datetime = getdate(),
stop_tran_seq_nbr = $hdr_tran_seq_nbr,
elapsed_time_hh = $elapsed_time_hh,
elapsed_time_mm = $elapsed_time_mm,
elapsed_time_ss = $elapsed_time_ss
WHERE
master_job_no = $master_job_no AND
master_job_sub_no = $_[0]";
##
##
############################################
# Function: TimeDiff
############################################
# param1 is the 'from' DateTime as 'YYYY-MM-DD HH:MM:SS' 24-hour clock
# param2 is the 'to' Date as 'YYYY-MM-DD HH:MM:SS' 24 hour-clock
# returns time difference in seconds
sub timeDiff {
my (@fromDT, @toDT);
my (@fromT, @toT);
my ($fromTM, $toTM);
if(!defined($_[0]) || !defined($_[1])){
return(1);
}
@fromDT = split(/ /,$_[0]);
@toDT = split(/ /,$_[1]);
@fromT = split(/:/,$fromDT[1]);
@toT = split(/:/,$toDT[1]);
$fromTM = ($fromT[0] * 3600) + ($fromT[1] * 60) + $fromT[2];
$toTM = ($toT[0] * 3600) + ($toT[1] * 60) + $toT[2];
# If fromDT is different than toDT we make the assumption that either the data is corrupt or the transaction ran over midnight
if($fromDT[0] ne $toDT[0]){
my @fromDate = split(/-/,$fromDT[0]);
my @toDate = split(/-/,$toDT[0]);
if( ($fromDate[0] eq $toDate[0]) && ($fromDate[1] eq $toDate[1]) && ( ($toDate[2] - $fromDate[2]) == 1) ) {
$toTM += (24 * 3600);
} else {
return;
}
}
if(($toTM - $fromTM) == 0){
return(1);
}
return($toTM - $fromTM);
}