@@ -356,35 +356,13 @@ private static SqlExpression DateTimeOffsetExtractPart(SqlExpression dateTimeOff
356356
357357 private static SqlExpression DateTimeOffsetToLocalDateTime ( SqlExpression dateTimeOffset )
358358 {
359- return SqlDml . Cast (
360- SqlDml . DateTimePlusInterval (
361- DateTimeOffsetToUtcDateTime ( dateTimeOffset ) ,
362- SqlDml . DateTimeMinusDateTime (
363- DateTimeOffsetToUtcDateTime (
364- SqlDml . Native ( "SYSTIMESTAMP" ) ) ,
365- SqlDml . Native ( "SYSTIMESTAMP" ) ) ) ,
366- SqlType . DateTime ) ;
359+ return SqlDml . Cast ( DateTimeOffsetToLocalTime ( dateTimeOffset ) , SqlType . DateTime ) ;
367360 }
368361
369362
370363 private static SqlExpression DateTimeOffsetToLocalTime ( SqlExpression dateTimeOffset )
371364 {
372- return SqlDml . FunctionCall ( "FROM_TZ" ,
373- SqlDml . Cast (
374- dateTimeOffset
375- -
376- ( SysExtractUtc ( SqlDml . Native ( "CURRENT_TIMESTAMP" ) )
377- - SysExtractUtc (
378- SqlDml . FunctionCall ( "FROM_TZ" ,
379- SqlDml . Cast ( SqlDml . Native ( "CURRENT_TIMESTAMP" ) , SqlType . DateTime ) ,
380- DateTimeOffsetExtractPart ( dateTimeOffset , "TZR" ) ) ) ) ,
381- SqlType . DateTime )
382- , SqlDml . Native ( "sessiontimezone" ) ) ;
383- }
384-
385- private static SqlExpression SysExtractUtc ( SqlExpression dateTimeOffset )
386- {
387- return SqlDml . FunctionCall ( "SYS_EXTRACT_UTC" , dateTimeOffset ) ;
365+ return SqlDml . RawConcat ( dateTimeOffset , SqlDml . Native ( " AT LOCAL" ) ) ;
388366 }
389367
390368 private static SqlExpression DateTimeToDateTimeOffset ( SqlExpression dateTime )
@@ -394,9 +372,7 @@ private static SqlExpression DateTimeToDateTimeOffset(SqlExpression dateTime)
394372
395373 private static SqlExpression DateTimeOffsetToUtcTime ( SqlExpression dateTimeOffset )
396374 {
397- return SqlDml . FunctionCall ( "FROM_TZ" ,
398- DateTimeOffsetToUtcDateTime ( dateTimeOffset ) ,
399- AnsiString ( "+00:00" ) ) ;
375+ return SqlDml . RawConcat ( dateTimeOffset , SqlDml . Native ( " at time zone 'UTC'" ) ) ;
400376 }
401377
402378 private static SqlExpression AnsiString ( string value )
0 commit comments