Class CivilTimeEncoder

java.lang.Object
org.apache.beam.sdk.io.gcp.bigquery.CivilTimeEncoder

public final class CivilTimeEncoder extends Object
Encoder for TIME and DATETIME values, according to civil_time encoding. Copied out of the zetasql package.

The valid range and number of bits required by each date/time field is as the following:

Field Range #Bits
Year [1, 9999] 14
Month [1, 12] 4
Day [1, 31] 5
Hour [0, 23] 5
Minute [0, 59] 6
Second [0, 59]* 6
Micros [0, 999999] 20
Nanos [0, 999999999] 30

* Leap second is not supported.

When encoding the TIME or DATETIME into a bit field, larger date/time field is on the more significant side.

  • Method Details

    • encodePacked32TimeSeconds

      public static int encodePacked32TimeSeconds(LocalTime time)
      Encodes time as a 4-byte integer with seconds precision.

      Encoding is as the following:

            3         2         1
       MSB 10987654321098765432109876543210 LSB
                          | H ||  M ||  S |
       
      See Also:
    • encodePacked32TimeSeconds

      public static int encodePacked32TimeSeconds(LocalTime time)
      Encodes time as a 4-byte integer with seconds precision.

      Encoding is as the following:

            3         2         1
       MSB 10987654321098765432109876543210 LSB
                          | H ||  M ||  S |
       
      See Also:
    • decodePacked32TimeSeconds

      public static LocalTime decodePacked32TimeSeconds(int bitFieldTimeSeconds)
      Decodes bitFieldTimeSeconds as a LocalTime with seconds precision.

      Encoding is as the following:

            3         2         1
       MSB 10987654321098765432109876543210 LSB
                          | H ||  M ||  S |
       
      See Also:
    • decodePacked32TimeSecondsAsJavaTime

      public static LocalTime decodePacked32TimeSecondsAsJavaTime(int bitFieldTimeSeconds)
      Decodes bitFieldTimeSeconds as a LocalTime with seconds precision.

      Encoding is as the following:

            3         2         1
       MSB 10987654321098765432109876543210 LSB
                          | H ||  M ||  S |
       
      See Also:
    • encodePacked64TimeMicros

      public static long encodePacked64TimeMicros(LocalTime time)
      Encodes time as a 8-byte integer with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                      | H ||  M ||  S ||-------micros-----|
       
      See Also:
    • encodePacked64TimeMicros

      public static long encodePacked64TimeMicros(LocalTime time)
      Encodes time as a 8-byte integer with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                      | H ||  M ||  S ||-------micros-----|
       
      See Also:
    • decodePacked64TimeMicros

      public static LocalTime decodePacked64TimeMicros(long bitFieldTimeMicros)
      Decodes bitFieldTimeMicros as a LocalTime with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                      | H ||  M ||  S ||-------micros-----|
       

      Warning: LocalTime only supports milliseconds precision. Result is truncated.

      See Also:
    • decodePacked64TimeMicrosAsJavaTime

      public static LocalTime decodePacked64TimeMicrosAsJavaTime(long bitFieldTimeMicros)
      Decodes bitFieldTimeMicros as a LocalTime with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                      | H ||  M ||  S ||-------micros-----|
       
      See Also:
    • encodePacked64TimeNanos

      public static long encodePacked64TimeNanos(LocalTime time)
      Encodes time as a 8-byte integer with nanoseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                            | H ||  M ||  S ||---------- nanos -----------|
       
      See Also:
    • encodePacked64TimeNanos

      public static long encodePacked64TimeNanos(LocalTime time)
      Encodes time as a 8-byte integer with nanoseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                            | H ||  M ||  S ||---------- nanos -----------|
       
      See Also:
    • decodePacked64TimeNanos

      public static LocalTime decodePacked64TimeNanos(long bitFieldTimeNanos)
      Decodes bitFieldTimeNanos as a LocalTime with nanoseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                            | H ||  M ||  S ||---------- nanos -----------|
       

      Warning: LocalTime only supports milliseconds precision. Result is truncated.

      See Also:
    • decodePacked64TimeNanosAsJavaTime

      public static LocalTime decodePacked64TimeNanosAsJavaTime(long bitFieldTimeNanos)
      Decodes bitFieldTimeNanos as a LocalTime with nanoseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                            | H ||  M ||  S ||---------- nanos -----------|
       
      See Also:
    • encodePacked64DatetimeSeconds

      public static long encodePacked64DatetimeSeconds(LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with seconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                   |--- year ---||m || D || H ||  M ||  S |
       
      See Also:
    • encodePacked64DatetimeSeconds

      public static long encodePacked64DatetimeSeconds(LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with seconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                   |--- year ---||m || D || H ||  M ||  S |
       
      See Also:
    • decodePacked64DatetimeSeconds

      public static LocalDateTime decodePacked64DatetimeSeconds(long bitFieldDatetimeSeconds)
      Decodes bitFieldDatetimeSeconds as a LocalDateTime with seconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                   |--- year ---||m || D || H ||  M ||  S |
       
      See Also:
    • decodePacked64DatetimeSecondsAsJavaTime

      public static LocalDateTime decodePacked64DatetimeSecondsAsJavaTime(long bitFieldDatetimeSeconds)
      Decodes bitFieldDatetimeSeconds as a LocalDateTime with seconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                   |--- year ---||m || D || H ||  M ||  S |
       
      See Also:
    • encodePacked64DatetimeMicros

      public static long encodePacked64DatetimeMicros(LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
               |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
       
      See Also:
    • encodePacked64DatetimeMicros

      public static long encodePacked64DatetimeMicros(LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
               |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
       
      See Also:
    • decodePacked64DatetimeMicros

      public static LocalDateTime decodePacked64DatetimeMicros(long bitFieldDatetimeMicros)
      Decodes bitFieldDatetimeMicros as a LocalDateTime with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
               |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
       

      Warning: LocalDateTime only supports milliseconds precision. Result is truncated.

      See Also:
    • decodePacked64DatetimeMicrosAsJavaTime

      public static LocalDateTime decodePacked64DatetimeMicrosAsJavaTime(long bitFieldDatetimeMicros)
      Decodes bitFieldDatetimeMicros as a LocalDateTime with microseconds precision.

      Encoding is as the following:

              6         5         4         3         2         1
       MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
               |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
       
      See Also: