[rt-users] RT 3.6.5 transactions created in wrong timezone....

Les Stott support at cyberpro.com.au
Mon May 26 10:55:22 EDT 2008



Jesse Vincent wrote:
> In the UI or in the database? RT stores all timestamps in GMT in the
> database.
>   
>
In the UI it looks fine. Its in the DB that it is out of whack.

Checking database tables via phpmyadmin shows Transactions.Created to be 
in wrong timezone whereas the UI shows them fine.

The script i am using is below for reference......

##################################################################################################
#!/usr/bin/perl
#
#
# rt3-timecheck
#


select(STDOUT); $|=1;

use DBI;

my $dayinterval;

if (!defined($ARGV[0])) {
 print "Usage: rt3-timecheck  [username] [<days>|<date from>] [<date 
to>]\n";
 print "       <days> is the number of days ago to report from.\n";
 print "       <date from> and <date to> are in the format yyyy-mm-dd\n";
 print "       <username> is an individual user to run a report for 
aswell as a grand total.\n";
 exit 1;
}


if (defined($ARGV[1])) {
        if ($ARGV[1] =~ /\-/) {
                $dayfrom = "\"$ARGV[1]\"";
                $dayrange = "from $dayfrom to ";
                if (defined($ARGV[2])) {
                        $dayto = "\"$ARGV[2]\"";
                        $dayrange .= $dayto;
                } else {
                        $dayto = "CURDATE()";
                        $dayrange .= "today";
                }
        } else {
                $dayinterval = $ARGV[1];
                $dayrange = "in the last $dayinterval days";
                $dayfrom = "DATE_SUB(CURDATE(), INTERVAL $dayinterval DAY)";
                $dayto = "CURDATE()";
        }
} else {
        $dayinterval = 7;
        $dayrange = "in the last $dayinterval days";
        $dayfrom = "DATE_SUB(CURDATE(), INTERVAL 7 DAY)";
        $dayto = "CURDATE()";
}


my $database = "rt3";
my $hostname = "localhost";
my $port = '';
my $user = "rt_user";
my $password = "rt_pass";

my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
my $dbh = DBI->connect($dsn,
                        $user,
                        $password,
                        {'RaiseError' => 1});

my $timetotal;

$myuser = $ARGV[0];

format STDOUT_TOP =

Time Recorded on Ticket Transactions @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
for @<<<<<<<
$dayrange,$myuser

 Id    Time Taken Created             Creator Queue      Subject
 ===== ========== =================== ======= ========== 
=================================================
.

format STDOUT =
 @<<<< @<<<<<<<<< @<<<<<<<<<<<<<<<<<< @<<<<<< @<<<<<<<<< 
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 $ary[0],$ary[1],$ary[2],            $ary[3],$ary[4]   $ary[5]
~~                                              
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                                $ary[5]
.

$query = "select Transactions.ObjectId, Transactions.TimeTaken, 
Transactions.Created, Users.Name, Queues.Name, Tickets.Subject from 
Transactions, Tickets, Queues, Users where Transactions.TimeTaken!='0' 
and Transactions.ObjectId=Tickets.Id and Transactions.Creator=Users.Id 
and Users.Name='$myuser' and Transactions.Created>=$dayfrom and 
Transactions.Created<=$dayto group by Transactions.Created;";
$sth = $dbh->prepare($query) or die "Can't prepare queue query";
$rc = $sth->execute
  or die "Can't execute statement: $DBI::errstr";

while (@ary = $sth->fetchrow_array) {
        $timetotal += $ary[1];
        write;
}

$ary[0] = "Total";
$ary[1] = $timetotal;
print " ===== ==========\n";
write;

$dbh->disconnect;

exit 0;

##################################################################################################


TIA

Regards,

Les



More information about the rt-users mailing list