@@ -706,18 +706,36 @@ public void testDateTimeDataTypes() {
706706 "min_date Date" ,
707707 "max_date Date" ,
708708 "min_dateTime DateTime" ,
709- "max_dateTime DateTime"
709+ "max_dateTime DateTime" ,
710+ "min_dateTime64 DateTime64" ,
711+ "max_dateTime64 DateTime64" ,
712+ "min_dateTime64_6 DateTime64(6)" ,
713+ "max_dateTime64_6 DateTime64(6)" ,
714+ "min_dateTime64_9 DateTime64(9)" ,
715+ "max_dateTime64_9 DateTime64(9)"
710716 );
711717
712718 final LocalDate minDate = LocalDate .parse ("1970-01-01" );
713719 final LocalDate maxDate = LocalDate .parse ("2149-06-06" );
714- final LocalDateTime minDateTime = LocalDateTime .parse ("1970-01-01T00:00:00 " );
720+ final LocalDateTime minDateTime = LocalDateTime .parse ("1970-01-01T01:02:03 " );
715721 final LocalDateTime maxDateTime = LocalDateTime .parse ("2106-02-07T06:28:15" );
722+ final LocalDateTime minDateTime64 = LocalDateTime .parse ("1970-01-01T01:02:03.123" );
723+ final LocalDateTime maxDateTime64 = LocalDateTime .parse ("2106-02-07T06:28:15.123" );
724+ final LocalDateTime minDateTime64_6 = LocalDateTime .parse ("1970-01-01T01:02:03.123456" );
725+ final LocalDateTime maxDateTime64_6 = LocalDateTime .parse ("2106-02-07T06:28:15.123456" );
726+ final LocalDateTime minDateTime64_9 = LocalDateTime .parse ("1970-01-01T01:02:03.123456789" );
727+ final LocalDateTime maxDateTime64_9 = LocalDateTime .parse ("2106-02-07T06:28:15.123456789" );
716728 final List <Supplier <String >> valueGenerators = Arrays .asList (
717729 () -> sq (minDate .toString ()),
718730 () -> sq (maxDate .toString ()),
719- () -> sq (minDateTime .format (DataTypeUtils .DATE_TIME_FORMATTER )),
720- () -> sq (maxDateTime .format (DataTypeUtils .DATE_TIME_FORMATTER ))
731+ () -> sq (minDateTime .format (DataTypeUtils .DATETIME_FORMATTER )),
732+ () -> sq (maxDateTime .format (DataTypeUtils .DATETIME_FORMATTER )),
733+ () -> sq (minDateTime64 .format (DataTypeUtils .DATETIME_WITH_NANOS_FORMATTER )),
734+ () -> sq (maxDateTime64 .format (DataTypeUtils .DATETIME_WITH_NANOS_FORMATTER )),
735+ () -> sq (minDateTime64_6 .format (DataTypeUtils .DATETIME_WITH_NANOS_FORMATTER )),
736+ () -> sq (maxDateTime64_6 .format (DataTypeUtils .DATETIME_WITH_NANOS_FORMATTER )),
737+ () -> sq (minDateTime64_9 .format (DataTypeUtils .DATETIME_WITH_NANOS_FORMATTER )),
738+ () -> sq (maxDateTime64_9 .format (DataTypeUtils .DATETIME_WITH_NANOS_FORMATTER ))
721739 );
722740
723741 final List <Consumer <ClickHouseBinaryFormatReader >> verifiers = new ArrayList <>();
@@ -741,6 +759,36 @@ public void testDateTimeDataTypes() {
741759 Assert .assertEquals (r .getLocalDateTime ("max_dateTime" ), maxDateTime );
742760 Assert .assertEquals (r .getLocalDateTime (4 ), maxDateTime );
743761 });
762+ verifiers .add (r -> {
763+ Assert .assertTrue (r .hasValue ("min_dateTime64" ), "No value for column min_dateTime64 found" );
764+ Assert .assertEquals (r .getLocalDateTime ("min_dateTime64" ), minDateTime64 );
765+ Assert .assertEquals (r .getLocalDateTime (5 ), minDateTime64 );
766+ });
767+ verifiers .add (r -> {
768+ Assert .assertTrue (r .hasValue ("max_dateTime64" ), "No value for column max_dateTime64 found" );
769+ Assert .assertEquals (r .getLocalDateTime ("max_dateTime64" ), maxDateTime64 );
770+ Assert .assertEquals (r .getLocalDateTime (6 ), maxDateTime64 );
771+ });
772+ verifiers .add (r -> {
773+ Assert .assertTrue (r .hasValue ("min_dateTime64_6" ), "No value for column min_dateTime64_6 found" );
774+ Assert .assertEquals (r .getLocalDateTime ("min_dateTime64_6" ), minDateTime64_6 );
775+ Assert .assertEquals (r .getLocalDateTime (7 ), minDateTime64_6 );
776+ });
777+ verifiers .add (r -> {
778+ Assert .assertTrue (r .hasValue ("max_dateTime64_6" ), "No value for column max_dateTime64_6 found" );
779+ Assert .assertEquals (r .getLocalDateTime ("max_dateTime64_6" ), maxDateTime64_6 );
780+ Assert .assertEquals (r .getLocalDateTime (8 ), maxDateTime64_6 );
781+ });
782+ verifiers .add (r -> {
783+ Assert .assertTrue (r .hasValue ("min_dateTime64_9" ), "No value for column min_dateTime64_9 found" );
784+ Assert .assertEquals (r .getLocalDateTime ("min_dateTime64_9" ), minDateTime64_9 );
785+ Assert .assertEquals (r .getLocalDateTime (9 ), minDateTime64_9 );
786+ });
787+ verifiers .add (r -> {
788+ Assert .assertTrue (r .hasValue ("max_dateTime64_9" ), "No value for column max_dateTime64_9 found" );
789+ Assert .assertEquals (r .getLocalDateTime ("max_dateTime64_9" ), maxDateTime64_9 );
790+ Assert .assertEquals (r .getLocalDateTime (10 ), maxDateTime64_9 );
791+ });
744792
745793 testDataTypes (columns , valueGenerators , verifiers );
746794 }
0 commit comments