/** * */ package testsuite.simple; import java.sql.Connection; import com.mysql.jdbc.log.StandardLogger; import java.sql.ResultSet; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.TimeZone; import testsuite.BaseTestCase; /** * @author TonĨi * */ public class TestBug50348 extends BaseTestCase { /** * @param name */ public TestBug50348(String name) { super(name); // TODO Auto-generated constructor stub } public void testBug50348() throws Exception { if (versionMeetsMinimum(5, 0)) { Connection tzConn = null; System.out.println("java.vm.version : " + System.getProperty("java.vm.version")); System.out.println("java.vm.vendor : " + System.getProperty("java.vm.vendor")); System.out.println("java.runtime.version : " + System.getProperty("java.runtime.version")); System.out.println("os.name : " + System.getProperty("os.name")); System.out.println("os.version : " + System.getProperty("os.version ")); System.out.println("sun.management.compiler : " + System.getProperty("sun.management.compiler")); try { //createTable("bug50348", "(`ID` int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `AD_END_DATE` datetime NOT NULL, `CREATED_TIMESTAMP` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB"); //this.stmt.execute("INSERT INTO `bug50348` (`ID`,`AD_END_DATE`) VALUES (1,'2010-12-20 23:59:59');"); tzConn = getConnectionWithProps("useTimezone=true,noTimezoneConversionForTimeType=true,profileSQL=true,characterEncoding=utf8,useUnicode=yes"); //useJDBCCompliantTimezoneShift=true, StringBuffer outBuf = new StringBuffer(); StandardLogger.bufferedLog = outBuf; // mysql> SELECT @@global.time_zone, @@session.time_zone; // +--------------------+---------------------+ // | @@global.time_zone | @@session.time_zone | // +--------------------+---------------------+ // | GMT | GMT | // +--------------------+---------------------+ // mysql> select * from bug50348; // +----+---------------------+---------------------+ // | ID | AD_END_DATE | CREATED_TIMESTAMP | // +----+---------------------+---------------------+ // | 1 | 2010-12-20 23:59:59 | 2010-01-29 10:27:09 | // +----+---------------------+---------------------+ // 1 row in set (0.00 sec) System.out.println("True DB value in GMT: 2010-12-20T23:59:59.000"); Statement tzstmt = tzConn.createStatement(); ResultSet tzrs = tzstmt.executeQuery("SELECT * FROM `bug50348`"); while (tzrs.next()) { java.sql.Timestamp endDate = tzrs.getTimestamp("ad_end_date"); System.out.println("From DB end: " + endDate); endDate = tzrs.getTimestamp("CREATED_TIMESTAMP"); System.out.println("From DB created: " + endDate); } String[] log = outBuf.toString().split(";"); String tzdateTimeString = "2010-12-20T23:59:59.000"; String tzstring = "GMT"; java.util.Date date = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); sdf.setTimeZone(TimeZone.getTimeZone(tzstring)); date = sdf.parse(tzdateTimeString); Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(tzstring)); cal.setTime(date); java.sql.Timestamp tztimestamp = new java.sql.Timestamp(date.getTime()); System.out.println("JVM converted TS for GMT: " + tztimestamp.toString()); } finally { StandardLogger.bufferedLog = null; closeMemberJDBCResources(); if (tzConn != null) { tzConn.close(); } } } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub junit.textui.TestRunner.run(TestBug50348.class); } }