Due to outdated TZ info in JVM bundled with Informix database server ("Krakatoa" feature) certain operations in Java UDRs may result in incorrect conversion of datetime values.
Conversion of datetime <-> java.sql.Timestamp types produces incorrect values.
Outdated TZ info in JVM supplied with Informix engine (Krakatoa)
Diagnosing the problem
Use IBM Time Zone Update Utility for Java (JTZU) to check the version of TZ info in Krakatoa JRE
JTZU can be downloaded here: https://www.ibm.com/developerworks/java/jdk/dst/jtzu.html.
Usage is explained at Readme file referenced on that page.
While executed in discovery mode, it searches for all installed JREs and prints a complete path and TZ info level in SDKList.txt file.
Sample content of SDKList.txt file:
By the time this document is created, the latest TZ info is tzdata2012d, which means that in provided sample all JREs except the first entry are outdated.
Resolving the problem
You can use JTZU utility to manually update TZ info within JRE:
1) Run JTZU in DISCOVERYONLY mode
2) Edit the SDKList.txt file and remove any entries that you do not want to patch.
3) Run JTZU with the JTZU settings file containing the values (Krakatoa must not be in use):