@Override public byte[] convert(ZoneId source) { return fromString(source.toString()); } }
public static String formatRollTime(final LocalTime time, final ZoneId zoneId) { return String.format("%s;%s;%s", Type.ROLL_TIME.name(), time.toString(), zoneId.toString()); }
public static QueueOffsetSpec ofRollTime(final LocalTime time, final ZoneId zoneId) { return new QueueOffsetSpec(Type.ROLL_TIME, new String[]{time.toString(), zoneId.toString()}); }
static OffsetTime defaultTime( ZoneId zoneId ) { return OffsetTime.of( TemporalFields.hour.defaultValue, TemporalFields.minute.defaultValue, TemporalFields.second.defaultValue, TemporalFields.nanosecond.defaultValue, assertValidZone( () -> ZoneOffset.of( zoneId.toString() ) ) ); }
return Values.stringValue( getZoneId(this::getZoneOffset).toString() );
@Override public String formatValue(ZoneId v) { return v.toString(); }
@Override public String convertToDbString(ZoneId beanValue) { return beanValue.toString(); }
final TimestampLocalTZTypeInfo timestampLocalTZTypeInfo = (TimestampLocalTZTypeInfo) typeInfo; final String timeZone = timestampLocalTZTypeInfo.getTimeZone().toString(); return Field.nullable(name, new ArrowType.Timestamp(TimeUnit.MILLISECOND, timeZone)); case BINARY:
@Override public String convert(ZoneId source) { return source.toString(); } }
@Override public String toNonNullValue(ZoneId value) { return value.toString(); } }
@Override public String toNonNullValue(ZoneId value) { return value.toString(); } }
@Override public String convert(ZoneId source) { return source.toString(); } }
@Test public void testLoadJdbcParamsWithConfigLocalDateTime() throws Exception { testCall(db, "CALL apoc.load.jdbc('jdbc:derby:derbyDB','SELECT * FROM PERSON WHERE NAME = ?',['John'])", (row) -> assertEquals( Util.map("NAME", "John", "HIRE_DATE", hireDate.toLocalDate(), "EFFECTIVE_FROM_DATE", effectiveFromDate.toLocalDateTime(), "TEST_TIME", time.toLocalTime(), "NULL_DATE", null), row.get("row"))); ZoneId asiaTokio = ZoneId.of("Asia/Tokyo"); testCall(db, "CALL apoc.load.jdbc('jdbc:derby:derbyDB','SELECT * FROM PERSON WHERE NAME = ?',['John'], {config})", map("config", map("timezone", asiaTokio.toString())), (row) -> { assertEquals( Util.map("NAME", "John", "HIRE_DATE", hireDate.toLocalDate(), "EFFECTIVE_FROM_DATE", effectiveFromDate.toInstant().atZone(asiaTokio).toOffsetDateTime(), "TEST_TIME", time.toLocalTime(), "NULL_DATE", null), row.get("row")); }); }
@Override public byte[] convert(ZoneId source) { return fromString(source.toString()); } }
@Override public ByteBuffer serialize(java.time.ZoneId value, ProtocolVersion protocolVersion) { if (value == null) { return null; } return varchar().serialize(value.toString(), protocolVersion); }
@Override public String format(java.time.ZoneId value) { if (value == null) { return "NULL"; } return varchar().format(value.toString()); }
static OffsetTime defaultTime( ZoneId zoneId ) { return OffsetTime.of( TemporalFields.hour.defaultValue, TemporalFields.minute.defaultValue, TemporalFields.second.defaultValue, TemporalFields.nanosecond.defaultValue, assertValidZone( () -> ZoneOffset.of( zoneId.toString() ) ) ); }
@Description("given timestamp (in varchar) in a timezone convert it to UTC") @ScalarFunction("to_utc_timestamp") @SqlType(StandardTypes.TIMESTAMP) public static long toUtcTimestamp(@SqlType(StandardTypes.VARCHAR) Slice inputTimestamp, @SqlType(StandardTypes.VARCHAR) Slice inputZoneId) { Timestamp javaTimestamp = Timestamp.valueOf(inputTimestamp.toStringUtf8()); ZoneId zoneId = ZoneId.of(inputZoneId.toStringUtf8(), ZoneId.SHORT_IDS); long offsetTimestamp = packDateTimeWithZone(javaTimestamp.getTime(), zoneId.toString()); return javaTimestamp.getTime() - ((timeZoneHourFromTimestampWithTimeZone(offsetTimestamp) * 60 + timeZoneMinuteFromTimestampWithTimeZone(offsetTimestamp)) * 60) * 1000; }
@Description("given timestamp in UTC and converts to given timezone") @ScalarFunction("from_utc_timestamp") @SqlType(StandardTypes.TIMESTAMP) public static long fromUtcTimestamp(@SqlType(StandardTypes.TIMESTAMP) long timestamp, @SqlType(StandardTypes.VARCHAR) Slice inputZoneId) { ZoneId zoneId = ZoneId.of(inputZoneId.toStringUtf8(), ZoneId.SHORT_IDS); long offsetTimestamp = packDateTimeWithZone(timestamp, zoneId.toString()); return timestamp + ((timeZoneHourFromTimestampWithTimeZone(offsetTimestamp) * 60 + timeZoneMinuteFromTimestampWithTimeZone(offsetTimestamp)) * 60) * 1000; }
@Override public String toString() { String str = toLocalDateTime().toString() + getOffset().toString(); if (getOffset() != getZone()) { str += '[' + getZone().toString() + ']'; } return str; }