@@ -1672,59 +1672,49 @@ public void TestTimestampLtzHonorsSessionTimezone()
16721672 {
16731673 using ( var conn = CreateAndOpenConnection ( ) )
16741674 {
1675+ CreateOrReplaceTable ( conn , "test_timestamp_ltz_timezone" , new [ ] { "val TIMESTAMP_LTZ" } ) ;
1676+
16751677 using ( var cmd = conn . CreateCommand ( ) )
16761678 {
1677- cmd . CommandText = "CREATE OR REPLACE TABLE test_timestamp_ltz_timezone (val TIMESTAMP_LTZ) " ;
1679+ cmd . CommandText = "ALTER SESSION SET TIMEZONE = 'Europe/Warsaw' " ;
16781680 cmd . ExecuteNonQuery ( ) ;
16791681
1680- try
1681- {
1682- cmd . CommandText = "ALTER SESSION SET TIMEZONE = 'Europe/Warsaw'" ;
1683- cmd . ExecuteNonQuery ( ) ;
1684-
1685- cmd . CommandText = "INSERT INTO test_timestamp_ltz_timezone VALUES('2023-08-09 10:00:00')" ;
1686- cmd . ExecuteNonQuery ( ) ;
1682+ cmd . CommandText = "INSERT INTO test_timestamp_ltz_timezone VALUES('2023-08-09 10:00:00')" ;
1683+ cmd . ExecuteNonQuery ( ) ;
16871684
1688- cmd . CommandText = "SELECT * FROM test_timestamp_ltz_timezone" ;
1689- using ( var reader = cmd . ExecuteReader ( ) )
1690- {
1691- Assert . IsTrue ( reader . Read ( ) , "Should read a record" ) ;
1692- var timestamp1 = reader . GetDateTime ( 0 ) ;
1685+ cmd . CommandText = "SELECT * FROM test_timestamp_ltz_timezone" ;
1686+ using ( var reader = cmd . ExecuteReader ( ) )
1687+ {
1688+ Assert . IsTrue ( reader . Read ( ) , "Should read a record" ) ;
1689+ var timestamp1 = reader . GetDateTime ( 0 ) ;
16931690
1694- var warsawTz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( "Europe/Warsaw" ) ;
1695- var expectedTime1 = new DateTime ( 2023 , 8 , 9 , 10 , 0 , 0 , DateTimeKind . Unspecified ) ;
1696- var expectedUtc1 = TimeZoneInfo . ConvertTimeToUtc ( expectedTime1 , warsawTz ) ;
1697- var expectedInWarsaw = TimeZoneInfo . ConvertTimeFromUtc ( expectedUtc1 , warsawTz ) ;
1691+ var warsawTz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( "Europe/Warsaw" ) ;
1692+ var expectedTime1 = new DateTime ( 2023 , 8 , 9 , 10 , 0 , 0 , DateTimeKind . Unspecified ) ;
1693+ var expectedUtc1 = TimeZoneInfo . ConvertTimeToUtc ( expectedTime1 , warsawTz ) ;
1694+ var expectedInWarsaw = TimeZoneInfo . ConvertTimeFromUtc ( expectedUtc1 , warsawTz ) ;
16981695
1699- Assert . AreEqual ( expectedInWarsaw , timestamp1 ,
1700- $ "Timestamp should be returned in Warsaw timezone. Expected: { expectedInWarsaw } , Got: { timestamp1 } ") ;
1701- }
1696+ Assert . AreEqual ( expectedInWarsaw , timestamp1 ,
1697+ $ "Timestamp should be returned in Warsaw timezone. Expected: { expectedInWarsaw } , Got: { timestamp1 } ") ;
1698+ }
17021699
1703- cmd . CommandText = "ALTER SESSION SET TIMEZONE = 'Pacific/Honolulu'" ;
1704- cmd . ExecuteNonQuery ( ) ;
1700+ cmd . CommandText = "ALTER SESSION SET TIMEZONE = 'Pacific/Honolulu'" ;
1701+ cmd . ExecuteNonQuery ( ) ;
17051702
1706- cmd . CommandText = "SELECT * FROM test_timestamp_ltz_timezone" ;
1707- using ( var reader = cmd . ExecuteReader ( ) )
1708- {
1709- Assert . IsTrue ( reader . Read ( ) , "Should read a record" ) ;
1710- var timestamp2 = reader . GetDateTime ( 0 ) ;
1703+ cmd . CommandText = "SELECT * FROM test_timestamp_ltz_timezone" ;
1704+ using ( var reader = cmd . ExecuteReader ( ) )
1705+ {
1706+ Assert . IsTrue ( reader . Read ( ) , "Should read a record" ) ;
1707+ var timestamp2 = reader . GetDateTime ( 0 ) ;
17111708
1712- var honoluluTz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( "Pacific/Honolulu" ) ;
1713- var warsawTz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( "Europe/Warsaw" ) ;
1709+ var honoluluTz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( "Pacific/Honolulu" ) ;
1710+ var warsawTz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( "Europe/Warsaw" ) ;
17141711
1715- var originalTimeInWarsaw = new DateTime ( 2023 , 8 , 9 , 10 , 0 , 0 , DateTimeKind . Unspecified ) ;
1716- var utcTime = TimeZoneInfo . ConvertTimeToUtc ( originalTimeInWarsaw , warsawTz ) ;
1717- var expectedInHonolulu = TimeZoneInfo . ConvertTimeFromUtc ( utcTime , honoluluTz ) ;
1712+ var originalTimeInWarsaw = new DateTime ( 2023 , 8 , 9 , 10 , 0 , 0 , DateTimeKind . Unspecified ) ;
1713+ var utcTime = TimeZoneInfo . ConvertTimeToUtc ( originalTimeInWarsaw , warsawTz ) ;
1714+ var expectedInHonolulu = TimeZoneInfo . ConvertTimeFromUtc ( utcTime , honoluluTz ) ;
17181715
1719- Assert . AreEqual ( expectedInHonolulu , timestamp2 ,
1720- $ "Timestamp should be returned in Honolulu timezone. Expected: { expectedInHonolulu } , Got: { timestamp2 } ") ;
1721- }
1722- }
1723- finally
1724- {
1725- // Cleanup
1726- cmd . CommandText = "DROP TABLE IF EXISTS test_timestamp_ltz_timezone" ;
1727- cmd . ExecuteNonQuery ( ) ;
1716+ Assert . AreEqual ( expectedInHonolulu , timestamp2 ,
1717+ $ "Timestamp should be returned in Honolulu timezone. Expected: { expectedInHonolulu } , Got: { timestamp2 } ") ;
17281718 }
17291719 }
17301720
@@ -1737,53 +1727,44 @@ public void TestTimestampLtzWithMultipleSessionTimezones()
17371727 {
17381728 using ( var conn = CreateAndOpenConnection ( ) )
17391729 {
1730+ CreateOrReplaceTable ( conn , "test_ltz_multi_tz" , new [ ] { "val TIMESTAMP_LTZ" } ) ;
1731+
17401732 using ( var cmd = conn . CreateCommand ( ) )
17411733 {
1742- cmd . CommandText = "CREATE OR REPLACE TABLE test_ltz_multi_tz (val TIMESTAMP_LTZ) " ;
1734+ cmd . CommandText = "ALTER SESSION SET TIMEZONE = 'UTC' " ;
17431735 cmd . ExecuteNonQuery ( ) ;
17441736
1745- try
1746- {
1747- cmd . CommandText = "ALTER SESSION SET TIMEZONE = 'UTC'" ;
1748- cmd . ExecuteNonQuery ( ) ;
1737+ cmd . CommandText = "INSERT INTO test_ltz_multi_tz VALUES('2024-01-01 00:00:00')" ;
1738+ cmd . ExecuteNonQuery ( ) ;
17491739
1750- cmd . CommandText = "INSERT INTO test_ltz_multi_tz VALUES('2024-01-01 00:00:00')" ;
1751- cmd . ExecuteNonQuery ( ) ;
1740+ var utcBase = new DateTime ( 2024 , 1 , 1 , 0 , 0 , 0 , DateTimeKind . Utc ) ;
17521741
1753- var utcBase = new DateTime ( 2024 , 1 , 1 , 0 , 0 , 0 , DateTimeKind . Utc ) ;
1742+ // Test reading with different timezones
1743+ var timezones = new [ ]
1744+ {
1745+ "Europe/Warsaw" ,
1746+ "Asia/Tokyo" ,
1747+ "America/Los_Angeles"
1748+ } ;
17541749
1755- // Test reading with different timezones
1756- var timezones = new [ ]
1757- {
1758- "Europe/Warsaw" ,
1759- "Asia/Tokyo" ,
1760- "America/Los_Angeles"
1761- } ;
1750+ foreach ( var tzName in timezones )
1751+ {
1752+ cmd . CommandText = $ "ALTER SESSION SET TIMEZONE = '{ tzName } '";
1753+ cmd . ExecuteNonQuery ( ) ;
17621754
1763- foreach ( var tzName in timezones )
1755+ cmd . CommandText = "SELECT val FROM test_ltz_multi_tz" ;
1756+ using ( var reader = cmd . ExecuteReader ( ) )
17641757 {
1765- cmd . CommandText = $ "ALTER SESSION SET TIMEZONE = ' { tzName } '" ;
1766- cmd . ExecuteNonQuery ( ) ;
1758+ Assert . IsTrue ( reader . Read ( ) ) ;
1759+ var timestamp = reader . GetDateTime ( 0 ) ;
17671760
1768- cmd . CommandText = "SELECT val FROM test_ltz_multi_tz" ;
1769- using ( var reader = cmd . ExecuteReader ( ) )
1770- {
1771- Assert . IsTrue ( reader . Read ( ) ) ;
1772- var timestamp = reader . GetDateTime ( 0 ) ;
1761+ var tz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( tzName ) ;
1762+ var expected = TimeZoneInfo . ConvertTimeFromUtc ( utcBase , tz ) ;
17731763
1774- var tz = TimeZoneConverter . TZConvert . GetTimeZoneInfo ( tzName ) ;
1775- var expected = TimeZoneInfo . ConvertTimeFromUtc ( utcBase , tz ) ;
1776-
1777- Assert . AreEqual ( expected , timestamp ,
1778- $ "TIMESTAMP_LTZ should be in { tzName } timezone") ;
1779- }
1764+ Assert . AreEqual ( expected , timestamp ,
1765+ $ "TIMESTAMP_LTZ should be in { tzName } timezone") ;
17801766 }
17811767 }
1782- finally
1783- {
1784- cmd . CommandText = "DROP TABLE IF EXISTS test_ltz_multi_tz" ;
1785- cmd . ExecuteNonQuery ( ) ;
1786- }
17871768 }
17881769
17891770 CloseConnection ( conn ) ;
0 commit comments