From f2a5c87179d7e3cdf03b878b034e1d79ace9efc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louise=20S=C3=B6derstr=C3=B6m?= Date: Tue, 27 Feb 2018 12:29:35 +0100 Subject: [PATCH] Fixed case when you select time but not timezone --- .../neo4j/values/storable/DateTimeValue.java | 36 ++++++++-- .../org/neo4j/values/storable/DateValue.java | 12 ++++ .../values/storable/LocalDateTimeValue.java | 12 ++++ .../neo4j/values/storable/LocalTimeValue.java | 12 ++++ .../neo4j/values/storable/TemporalValue.java | 4 ++ .../org/neo4j/values/storable/TimeValue.java | 26 +++++-- .../values/storable/DateTimeValueTest.java | 10 +-- .../features/TemporalSelectAcceptance.feature | 68 +++++++++---------- 8 files changed, 125 insertions(+), 55 deletions(-) diff --git a/community/values/src/main/java/org/neo4j/values/storable/DateTimeValue.java b/community/values/src/main/java/org/neo4j/values/storable/DateTimeValue.java index bafce85cc9cd3..3d13f7327f40f 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/DateTimeValue.java +++ b/community/values/src/main/java/org/neo4j/values/storable/DateTimeValue.java @@ -169,6 +169,7 @@ public DateTimeValue buildInternal() boolean selectingDate = fields.containsKey( Field.date ); boolean selectingTime = fields.containsKey( Field.time ); boolean selectingDateTime = fields.containsKey( Field.datetime ); + boolean selectingTimeZone; ZonedDateTime result; if ( selectingDateTime ) { @@ -178,12 +179,16 @@ public DateTimeValue buildInternal() throw new IllegalArgumentException( String.format( "Cannot construct date time from: %s", dtField ) ); } TemporalValue dt = (TemporalValue) dtField; - OffsetTime timePart = dt.getTimePart( defaultZone ); - result = ZonedDateTime.of( dt.getDatePart(), timePart.toLocalTime(), timePart.getOffset() ); + LocalTime timePart = dt.getTimePart( defaultZone ).toLocalTime(); + ZoneId zoneId = dt.getZoneId( defaultZone ); + result = ZonedDateTime.of( dt.getDatePart(), timePart, zoneId ); + selectingTimeZone = dt.hasTimeZone(); } else if ( selectingTime || selectingDate ) { - OffsetTime time; + + LocalTime time; + ZoneId zoneId; if ( selectingTime ) { AnyValue timeField = fields.get( Field.time ); @@ -192,11 +197,15 @@ else if ( selectingTime || selectingDate ) throw new IllegalArgumentException( String.format( "Cannot construct local time from: %s", timeField ) ); } TemporalValue t = (TemporalValue) timeField; - time = t.getTimePart( defaultZone ); + time = t.getTimePart( defaultZone ).toLocalTime(); + zoneId = t.getZoneId( defaultZone ); + selectingTimeZone = t.hasTimeZone(); } else { - time = TimeValue.defaultTime( timezone() ); + time = LocalTimeValue.DEFAULT_LOCAL_TIME; + zoneId = timezone(); + selectingTimeZone = false; } LocalDate date; if ( selectingDate ) @@ -213,11 +222,12 @@ else if ( selectingTime || selectingDate ) { date = DateValue.DEFAULT_CALENDER_DATE; } - result = ZonedDateTime.of( date, time.toLocalTime(), time.getOffset() ); + result = ZonedDateTime.of( date, time, zoneId ); } else { result = defaulZonedDateTime; + selectingTimeZone = false; } if ( fields.containsKey( Field.week ) && !selectingDate && !selectingDateTime ) @@ -233,7 +243,7 @@ else if ( selectingTime || selectingDate ) result = assignAllFields( result ); if ( timezone != null ) { - if ( selectingTime || selectingDateTime ) + if ( (selectingTime || selectingDateTime) && selectingTimeZone ) { result = result.withZoneSameInstant( timezone() ); } @@ -298,6 +308,18 @@ OffsetTime getTimePart( Supplier defaultZone ) return OffsetTime.of( localTime, offset ); } + @Override + ZoneId getZoneId( Supplier defaultZone ) + { + return value.getZone(); + } + + @Override + public boolean hasTimeZone() + { + return true; + } + @Override public boolean equals( Value other ) { diff --git a/community/values/src/main/java/org/neo4j/values/storable/DateValue.java b/community/values/src/main/java/org/neo4j/values/storable/DateValue.java index efb26a3f2bf9b..81ba22b6478b9 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/DateValue.java +++ b/community/values/src/main/java/org/neo4j/values/storable/DateValue.java @@ -157,6 +157,18 @@ OffsetTime getTimePart( Supplier defaultZone ) throw new IllegalArgumentException( String.format( "Cannot get the time of: %s", this ) ); } + @Override + ZoneId getZoneId( Supplier defaultZone ) + { + throw new IllegalArgumentException( String.format( "Cannot get the time zone of: %s", this ) ); + } + + @Override + public boolean hasTimeZone() + { + return false; + } + @Override public boolean equals( Value other ) { diff --git a/community/values/src/main/java/org/neo4j/values/storable/LocalDateTimeValue.java b/community/values/src/main/java/org/neo4j/values/storable/LocalDateTimeValue.java index d5c311a25c843..93923a1767f4c 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/LocalDateTimeValue.java +++ b/community/values/src/main/java/org/neo4j/values/storable/LocalDateTimeValue.java @@ -261,6 +261,18 @@ OffsetTime getTimePart( Supplier defaultZone ) return OffsetTime.of(value.toLocalTime(), currentOffset); } + @Override + ZoneId getZoneId( Supplier defaultZone ) + { + return defaultZone.get(); + } + + @Override + public boolean hasTimeZone() + { + return false; + } + @Override public boolean equals( Value other ) { diff --git a/community/values/src/main/java/org/neo4j/values/storable/LocalTimeValue.java b/community/values/src/main/java/org/neo4j/values/storable/LocalTimeValue.java index 0ef97db64eeb7..ec22716e1fa60 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/LocalTimeValue.java +++ b/community/values/src/main/java/org/neo4j/values/storable/LocalTimeValue.java @@ -188,6 +188,18 @@ OffsetTime getTimePart( Supplier defaultZone ) return OffsetTime.of( value, currentOffset ); } + @Override + ZoneId getZoneId( Supplier defaultZone ) + { + return defaultZone.get(); + } + + @Override + public boolean hasTimeZone() + { + return false; + } + @Override public boolean equals( Value other ) { diff --git a/community/values/src/main/java/org/neo4j/values/storable/TemporalValue.java b/community/values/src/main/java/org/neo4j/values/storable/TemporalValue.java index 2ca5ab2e6f9b7..5939822c0a0fb 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/TemporalValue.java +++ b/community/values/src/main/java/org/neo4j/values/storable/TemporalValue.java @@ -74,6 +74,10 @@ public abstract class TemporalValue defaultZone ); + abstract ZoneId getZoneId( Supplier defaultZone ); + + abstract boolean hasTimeZone(); + abstract V replacement( T temporal ); @Override diff --git a/community/values/src/main/java/org/neo4j/values/storable/TimeValue.java b/community/values/src/main/java/org/neo4j/values/storable/TimeValue.java index bdfe8a97cbb25..e34dda8d2cbd6 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/TimeValue.java +++ b/community/values/src/main/java/org/neo4j/values/storable/TimeValue.java @@ -123,27 +123,31 @@ static TimeBuilder builder( Supplier defaultZone ) @Override public TimeValue buildInternal() { - boolean selecting = fields.containsKey( Field.time ); + boolean selectingTime = fields.containsKey( Field.time ); + boolean selectingTimeZone; OffsetTime result; - if ( selecting ) + if ( selectingTime ) { AnyValue time = fields.get( Field.time ); if ( !(time instanceof TemporalValue) ) { throw new IllegalArgumentException( String.format( "Cannot construct time from: %s", time ) ); } - result = ((TemporalValue) time).getTimePart( defaultZone ); + TemporalValue t = (TemporalValue) time; + result = t.getTimePart( defaultZone ); + selectingTimeZone = t.hasTimeZone(); } else { result = defaultTime( timezone() ); + selectingTimeZone = false; } result = assignAllFields( result ); if ( timezone != null ) { ZoneOffset currentOffset = ZonedDateTime.ofInstant( Instant.now(), timezone() ).getOffset(); - if ( selecting ) + if ( selectingTime && selectingTimeZone ) { result = result.withOffsetSameInstant( currentOffset ); } @@ -169,7 +173,7 @@ protected TimeValue selectTime( } TemporalValue v = (TemporalValue) temporal; - OffsetTime time = v.getTimePart(defaultZone); + OffsetTime time = v.getTimePart( defaultZone ); if ( timezone != null ) { ZoneOffset currentOffset = ZonedDateTime.ofInstant( Instant.now(), timezone() ).getOffset(); @@ -218,6 +222,18 @@ OffsetTime getTimePart( Supplier defaultZone ) return value; } + @Override + ZoneId getZoneId( Supplier defaultZone ) + { + return value.getOffset(); + } + + @Override + public boolean hasTimeZone() + { + return true; + } + @Override public boolean equals( Value other ) { diff --git a/community/values/src/test/java/org/neo4j/values/storable/DateTimeValueTest.java b/community/values/src/test/java/org/neo4j/values/storable/DateTimeValueTest.java index 54339e72a1d3e..727ab3c81a304 100644 --- a/community/values/src/test/java/org/neo4j/values/storable/DateTimeValueTest.java +++ b/community/values/src/test/java/org/neo4j/values/storable/DateTimeValueTest.java @@ -81,7 +81,7 @@ public void shouldParseDateTime() } @Ignore - public void shouldSupportLeadSeconds() + public void shouldSupportLeapSeconds() { // Leap second according to https://www.timeanddate.com/time/leap-seconds-future.html assertEquals( datetime( 2016, 12, 31, 23, 59, 60, 0, UTC ), parse( "2016-12-31T23:59:60Z", orFail ) ); @@ -318,14 +318,6 @@ public void shouldRejectInvalidFieldCombinations() .add( "month", 12 ) .add( "dayOfWeek", 5 ) .assertThrows( IllegalArgumentException.class, "Cannot assign dayOfWeek to calendar date." ); - asserting( fromValues( builder( clock ) ) ) - .add( "datetime", localDateTime( LocalDateTime.now( clock ) ) ) - .add( "day", 12 ) - .assertThrows( IllegalArgumentException.class, "Cannot assign day when selecting datetime." ); - asserting( fromValues( builder( clock ) ) ) - .add( "datetime", localDateTime( LocalDateTime.now( clock ) ) ) - .add( "hour", 12 ) - .assertThrows( IllegalArgumentException.class, "Cannot assign hour when selecting datetime." ); asserting( fromValues( builder( clock ) ) ) .add( "year", 2018 ) .add( "week", 12 ) diff --git a/enterprise/cypher/acceptance-spec-suite/src/test/resources/cypher/features/TemporalSelectAcceptance.feature b/enterprise/cypher/acceptance-spec-suite/src/test/resources/cypher/features/TemporalSelectAcceptance.feature index 41fb05c40916c..3fdd2850a1e27 100644 --- a/enterprise/cypher/acceptance-spec-suite/src/test/resources/cypher/features/TemporalSelectAcceptance.feature +++ b/enterprise/cypher/acceptance-spec-suite/src/test/resources/cypher/features/TemporalSelectAcceptance.feature @@ -69,7 +69,7 @@ Feature: TemporalSelectAcceptance UNWIND [localtime({hour:12, minute:31, second:14, nanosecond: 645876123}), time({hour:12, minute:31, second:14, microsecond: 645876, timezone: '+01:00'}), localdatetime({year:1984, week:10, dayOfWeek:3, hour:12, minute:31, second:14, millisecond: 645}), - datetime({year:1984, month:10, day:11, hour:12, timezone: '+01:00'})] as dd + datetime({year:1984, month:10, day:11, hour:12, timezone: 'Europe/Stockholm'})] as dd RETURN time(dd) as d1, time({time:dd}) as d2, time({time:dd, timezone:'+05:00'}) as d3, @@ -78,9 +78,9 @@ Feature: TemporalSelectAcceptance """ Then the result should be, in order: | d1 | d2 | d3 | d4 | d5 | - | '12:31:14.645876123Z' | '12:31:14.645876123Z' | '17:31:14.645876123+05:00' | '12:31:42.645876123Z' | '17:31:42.645876123+05:00' | + | '12:31:14.645876123Z' | '12:31:14.645876123Z' | '12:31:14.645876123+05:00' | '12:31:42.645876123Z' | '12:31:42.645876123+05:00' | | '12:31:14.645876+01:00' | '12:31:14.645876+01:00' | '16:31:14.645876+05:00' | '12:31:42.645876+01:00' | '16:31:42.645876+05:00' | - | '12:31:14.645Z' | '12:31:14.645Z' | '17:31:14.645+05:00' | '12:31:42.645Z' | '17:31:42.645+05:00' | + | '12:31:14.645Z' | '12:31:14.645Z' | '12:31:14.645+05:00' | '12:31:42.645Z' | '12:31:42.645+05:00' | | '12:00+01:00' | '12:00+01:00' | '16:00+05:00' | '12:00:42+01:00' | '16:00:42+05:00' | And no side effects @@ -176,13 +176,13 @@ Feature: TemporalSelectAcceptance RETURN datetime({date:dd, hour: 10, minute: 10, second: 10}) as d1, datetime({date:dd, hour: 10, minute: 10, second: 10, timezone:'+05:00'}) as d2, datetime({date:dd, day: 28, hour: 10, minute: 10, second: 10}) as d3, - datetime({date:dd, day: 28, hour: 10, minute: 10, second: 10, timezone:'+05:00'}) as d4 + datetime({date:dd, day: 28, hour: 10, minute: 10, second: 10, timezone:'Pacific/Honolulu'}) as d4 """ Then the result should be, in order: | d1 | d2 | d3 | d4 | - | '1984-10-11T10:10:10Z' | '1984-10-11T10:10:10+05:00' | '1984-10-28T10:10:10Z' | '1984-10-28T10:10:10+05:00' | - | '1984-03-07T10:10:10Z' | '1984-03-07T10:10:10+05:00' | '1984-03-28T10:10:10Z' | '1984-03-28T10:10:10+05:00' | - | '1984-10-11T10:10:10Z' | '1984-10-11T10:10:10+05:00' | '1984-10-28T10:10:10Z' | '1984-10-28T10:10:10+05:00' | + | '1984-10-11T10:10:10Z' | '1984-10-11T10:10:10+05:00' | '1984-10-28T10:10:10Z' | '1984-10-28T10:10:10-10:00[Pacific/Honolulu]' | + | '1984-03-07T10:10:10Z' | '1984-03-07T10:10:10+05:00' | '1984-03-28T10:10:10Z' | '1984-03-28T10:10:10-10:00[Pacific/Honolulu]' | + | '1984-10-11T10:10:10Z' | '1984-10-11T10:10:10+05:00' | '1984-10-28T10:10:10Z' | '1984-10-28T10:10:10-10:00[Pacific/Honolulu]' | And no side effects Scenario: Should select time into date time @@ -192,18 +192,18 @@ Feature: TemporalSelectAcceptance UNWIND [localtime({hour:12, minute:31, second:14, nanosecond: 645876123}), time({hour:12, minute:31, second:14, microsecond: 645876, timezone: '+01:00'}), localdatetime({year:1984, week:10, dayOfWeek:3, hour:12, minute:31, second:14, millisecond: 645}), - datetime({year:1984, month:10, day:11, hour:12, timezone: '+01:00'})] as tt + datetime({year:1984, month:10, day:11, hour:12, timezone: 'Europe/Stockholm'})] as tt RETURN datetime({year:1984, month:10, day:11, time:tt}) as d1, datetime({year:1984, month:10, day:11, time:tt, timezone:'+05:00'}) as d2, datetime({year:1984, month:10, day:11, time:tt, second: 42}) as d3, - datetime({year:1984, month:10, day:11, time:tt, second: 42, timezone:'+05:00'}) as d4 + datetime({year:1984, month:10, day:11, time:tt, second: 42, timezone:'Pacific/Honolulu'}) as d4 """ Then the result should be, in order: - | d1 | d2 | d3 | d4 | - | '1984-10-11T12:31:14.645876123Z' | '1984-10-11T17:31:14.645876123+05:00' | '1984-10-11T12:31:42.645876123Z' | '1984-10-11T17:31:42.645876123+05:00' | - | '1984-10-11T12:31:14.645876+01:00'| '1984-10-11T16:31:14.645876+05:00' | '1984-10-11T12:31:42.645876+01:00'| '1984-10-11T16:31:42.645876+05:00' | - | '1984-10-11T12:31:14.645Z' | '1984-10-11T17:31:14.645+05:00' | '1984-10-11T12:31:42.645Z' | '1984-10-11T17:31:42.645+05:00' | - | '1984-10-11T12:00+01:00' | '1984-10-11T16:00+05:00' | '1984-10-11T12:00:42+01:00' | '1984-10-11T16:00:42+05:00' | + | d1 | d2 | d3 | d4 | + | '1984-10-11T12:31:14.645876123Z' | '1984-10-11T12:31:14.645876123+05:00' | '1984-10-11T12:31:42.645876123Z' | '1984-10-11T12:31:42.645876123-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645876+01:00' | '1984-10-11T16:31:14.645876+05:00' | '1984-10-11T12:31:42.645876+01:00' | '1984-10-11T01:31:42.645876-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645Z' | '1984-10-11T12:31:14.645+05:00' | '1984-10-11T12:31:42.645Z' | '1984-10-11T12:31:42.645-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:00+01:00[Europe/Stockholm]' | '1984-10-11T16:00+05:00' | '1984-10-11T12:00:42+01:00[Europe/Stockholm]' | '1984-10-11T01:00:42-10:00[Pacific/Honolulu]' | And no side effects Scenario: Should select date and time into date time @@ -216,26 +216,26 @@ Feature: TemporalSelectAcceptance UNWIND [localtime({hour:12, minute:31, second:14, nanosecond: 645876123}), time({hour:12, minute:31, second:14, microsecond: 645876, timezone: '+01:00'}), localdatetime({year:1984, week:10, dayOfWeek:3, hour:12, minute:31, second:14, millisecond: 645}), - datetime({year:1984, month:10, day:11, hour:12, timezone: '+01:00'})] as tt + datetime({year:1984, month:10, day:11, hour:12, timezone: 'Europe/Stockholm'})] as tt RETURN datetime({date:dd, time:tt}) as d1, datetime({date:dd, time:tt, timezone:'+05:00'}) as d2, datetime({date:dd, time:tt, day: 28, second: 42}) as d3, - datetime({date:dd, time:tt, day: 28, second: 42, timezone:'+05:00'}) as d4 + datetime({date:dd, time:tt, day: 28, second: 42, timezone:'Pacific/Honolulu'}) as d4 """ Then the result should be, in order: - | d1 | d2 | d3 | d4 | - | '1984-10-11T12:31:14.645876123Z' | '1984-10-11T17:31:14.645876123+05:00' | '1984-10-28T12:31:42.645876123Z' | '1984-10-28T17:31:42.645876123+05:00' | - | '1984-10-11T12:31:14.645876+01:00' | '1984-10-11T16:31:14.645876+05:00' | '1984-10-28T12:31:42.645876+01:00' | '1984-10-28T16:31:42.645876+05:00' | - | '1984-10-11T12:31:14.645Z' | '1984-10-11T17:31:14.645+05:00' | '1984-10-28T12:31:42.645Z' | '1984-10-28T17:31:42.645+05:00' | - | '1984-10-11T12:00+01:00' | '1984-10-11T16:00+05:00' | '1984-10-28T12:00:42+01:00' | '1984-10-28T16:00:42+05:00' | - | '1984-03-07T12:31:14.645876123Z' | '1984-03-07T17:31:14.645876123+05:00' | '1984-03-28T12:31:42.645876123Z' | '1984-03-28T17:31:42.645876123+05:00' | - | '1984-03-07T12:31:14.645876+01:00' | '1984-03-07T16:31:14.645876+05:00' | '1984-03-28T12:31:42.645876+01:00' | '1984-03-28T16:31:42.645876+05:00' | - | '1984-03-07T12:31:14.645Z' | '1984-03-07T17:31:14.645+05:00' | '1984-03-28T12:31:42.645Z' | '1984-03-28T17:31:42.645+05:00' | - | '1984-03-07T12:00+01:00' | '1984-03-07T16:00+05:00' | '1984-03-28T12:00:42+01:00' | '1984-03-28T16:00:42+05:00' | - | '1984-10-11T12:31:14.645876123Z' | '1984-10-11T17:31:14.645876123+05:00' | '1984-10-28T12:31:42.645876123Z' | '1984-10-28T17:31:42.645876123+05:00' | - | '1984-10-11T12:31:14.645876+01:00' | '1984-10-11T16:31:14.645876+05:00' | '1984-10-28T12:31:42.645876+01:00' | '1984-10-28T16:31:42.645876+05:00' | - | '1984-10-11T12:31:14.645Z' | '1984-10-11T17:31:14.645+05:00' | '1984-10-28T12:31:42.645Z' | '1984-10-28T17:31:42.645+05:00' | - | '1984-10-11T12:00+01:00' | '1984-10-11T16:00+05:00' | '1984-10-28T12:00:42+01:00' | '1984-10-28T16:00:42+05:00' | + | d1 | d2 | d3 | d4 | + | '1984-10-11T12:31:14.645876123Z' | '1984-10-11T12:31:14.645876123+05:00' | '1984-10-28T12:31:42.645876123Z' | '1984-10-28T12:31:42.645876123-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645876+01:00' | '1984-10-11T16:31:14.645876+05:00' | '1984-10-28T12:31:42.645876+01:00' | '1984-10-28T01:31:42.645876-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645Z' | '1984-10-11T12:31:14.645+05:00' | '1984-10-28T12:31:42.645Z' | '1984-10-28T12:31:42.645-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:00+01:00[Europe/Stockholm]' | '1984-10-11T16:00+05:00' | '1984-10-28T12:00:42+01:00[Europe/Stockholm]' | '1984-10-28T01:00:42-10:00[Pacific/Honolulu]' | + | '1984-03-07T12:31:14.645876123Z' | '1984-03-07T12:31:14.645876123+05:00' | '1984-03-28T12:31:42.645876123Z' | '1984-03-28T12:31:42.645876123-10:00[Pacific/Honolulu]' | + | '1984-03-07T12:31:14.645876+01:00' | '1984-03-07T16:31:14.645876+05:00' | '1984-03-28T12:31:42.645876+01:00' | '1984-03-28T01:31:42.645876-10:00[Pacific/Honolulu]' | + | '1984-03-07T12:31:14.645Z' | '1984-03-07T12:31:14.645+05:00' | '1984-03-28T12:31:42.645Z' | '1984-03-28T12:31:42.645-10:00[Pacific/Honolulu]' | + | '1984-03-07T12:00+01:00[Europe/Stockholm]' | '1984-03-07T16:00+05:00' | '1984-03-28T12:00:42+02:00[Europe/Stockholm]' | '1984-03-28T00:00:42-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645876123Z' | '1984-10-11T12:31:14.645876123+05:00' | '1984-10-28T12:31:42.645876123Z' | '1984-10-28T12:31:42.645876123-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645876+01:00' | '1984-10-11T16:31:14.645876+05:00' | '1984-10-28T12:31:42.645876+01:00' | '1984-10-28T01:31:42.645876-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:31:14.645Z' | '1984-10-11T12:31:14.645+05:00' | '1984-10-28T12:31:42.645Z' | '1984-10-28T12:31:42.645-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:00+01:00[Europe/Stockholm]' | '1984-10-11T16:00+05:00' | '1984-10-28T12:00:42+01:00[Europe/Stockholm]' | '1984-10-28T01:00:42-10:00[Pacific/Honolulu]' | And no side effects Scenario: Should select datetime into date time @@ -243,16 +243,16 @@ Feature: TemporalSelectAcceptance When executing query: """ UNWIND [localdatetime({year:1984, week:10, dayOfWeek:3, hour:12, minute:31, second:14, millisecond: 645}), - datetime({year:1984, month:10, day:11, hour:12, timezone: '+01:00'})] as dd + datetime({year:1984, month:10, day:11, hour:12, timezone: 'Europe/Stockholm'})] as dd RETURN datetime(dd) as d1, datetime({datetime:dd}) as d2, datetime({datetime:dd, timezone:'+05:00'}) as d3, datetime({datetime:dd, day: 28, second: 42}) as d4, - datetime({datetime:dd, day: 28, second: 42, timezone:'+05:00'}) as d5 + datetime({datetime:dd, day: 28, second: 42, timezone:'Pacific/Honolulu'}) as d5 """ Then the result should be, in order: - | d1 | d2 | d3 | d4 | d5 | - | '1984-03-07T12:31:14.645Z' | '1984-03-07T12:31:14.645Z' | '1984-03-07T17:31:14.645+05:00' | '1984-03-28T12:31:42.645Z' | '1984-03-28T17:31:42.645+05:00' | - | '1984-10-11T12:00+01:00' | '1984-10-11T12:00+01:00' | '1984-10-11T16:00+05:00' | '1984-10-28T12:00:42+01:00' | '1984-10-28T16:00:42+05:00' | + | d1 | d2 | d3 | d4 | d5 | + | '1984-03-07T12:31:14.645Z' | '1984-03-07T12:31:14.645Z' | '1984-03-07T12:31:14.645+05:00' | '1984-03-28T12:31:42.645Z' | '1984-03-28T12:31:42.645-10:00[Pacific/Honolulu]' | + | '1984-10-11T12:00+01:00[Europe/Stockholm]' | '1984-10-11T12:00+01:00[Europe/Stockholm]' | '1984-10-11T16:00+05:00' | '1984-10-28T12:00:42+01:00[Europe/Stockholm]' | '1984-10-28T01:00:42-10:00[Pacific/Honolulu]' | And no side effects