I've dug into this a bit further and can offer this:
First, the OTRS code itself is inserting time stamps in the database as local (to the database server) time.
From Ticket.pm:
SQL => "INSERT INTO time_accounting "
. " (ticket_id, article_id, time_unit, create_time, create_by, change_time, change_by) "
. " VALUES (?, ?, $Param{TimeUnit}, current_timestamp, ?, current_timestamp, ?)",
For this to put proper UTC times in the database it would need to change from CURRENT_TIMESTAMP to:
SQL Server: SYSUTCDATETIME
MySQL: UTC_TIMESTAMP
Since there is no true cross-platform function for UTC time, it would seem most safe to add a user-defined function to the OTRS DB like OTRS_SYS_TIME. In SQL Server, creating a UDF is a trivial matter. I think MySQL is a bit trickier as it requires a C-style implementation, which introduces a few more OS cross-compatibility issues.
Is this just a problem for Windows DB implementations? Does MySQL on a Linux distro behave differently? Is this not an issue for most OTRS users? I see UTC-based time referencing as critical for my implementation (support across 9 time zones, a need to do integration with/reporting from the database, etc.), but I may be in the minority.
Hugh
Our staff work in multiple time zones so I need to store all ticket data in UTC.
I believe I have identified the options I want:
- On the server, include $ENV{TZ}='UTC'; in config.pm
- In the SysConfig, Core::Time , TimeZoneUserBrowserAutoOffset is set to Yes
From what I can see, the $ENV{TZ}='UTC'; setting is not taking effect in my environment.
- Windows Server 2008
- ActiveState Perl
Has anyone seen this configuration work before? Is there a page in OTRS that shows the "system clock"?
Hugh