class SqlTimestamp {

    public LocalDateTime toLocalDateTime()
    {
        long epochSecond = floorDiv(epochMicros, MICROSECONDS_PER_SECOND);
        int microOfSecond = floorMod(epochMicros, MICROSECONDS_PER_SECOND);
        int nanoOfSecond = (microOfSecond * NANOSECONDS_PER_MICROSECOND) +
                toIntExact(roundDiv(picosOfMicros, PICOSECONDS_PER_NANOSECOND));
        return LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, ZoneOffset.UTC);
    }

    private  SqlTimestamp(int precision, long epochMicros, int picosOfMicro);

}