docs: protected DataType parseMiscellaneousType( DdlTokenStream tokens ) throws ParsingException {
          DataType dataType = null;
          String typeName = null;
  
          if (tokens.matches(DataTypes.DTYPE_INTERVAL)) {
              dataType = new DataType();
              typeName = consume(tokens, dataType, false, DataTypes.DTYPE_INTERVAL);
              dataType.setName(typeName);
              // <non-second datetime field> TO <end field>
              //
              // CASE 2a: { YEAR | MONTH | DAY | HOUR | MINUTE } [ [ <left paren> <interval leading field precision> <right paren> ]
              // CASE 2b: SECOND [ <left paren> <interval leading field precision> [ <comma> <interval fractional seconds precision>
              // ] <right paren> ]
  
              // CASE 1: { YEAR | MONTH | DAY | HOUR | MINUTE } TO { YEAR | MONTH | DAY | HOUR | MINUTE }
              if (tokens.matchesAnyOf("YEAR", "MONTH", "DAY", "HOUR", "MINUTE")) {
                  // Consume first
                  consume(tokens, dataType, true);
  
                  if (canConsume(tokens, dataType, true, "TO")) {
                      // CASE 1:
                      // assume "YEAR | MONTH | DAY | HOUR | MINUTE" and consume
                      consume(tokens, dataType, true);
                  } else if (tokens.matches(L_PAREN, TokenStream.ANY_VALUE, R_PAREN)) {
                      // CASE 2a:
                      consume(tokens, dataType, true, L_PAREN);
                      consume(tokens, dataType, true);
                      consume(tokens, dataType, true, R_PAREN);
                  } else {
                      LOGGER.debug("  WARNING:  PROBLEM parsing INTERVAL data type. Check your DDL for incomplete statement.");
                  }
              } else if (canConsume(tokens, dataType, true, "SECOND")) {
                  // CASE 2b:
                  if (canConsume(tokens, dataType, true, L_PAREN)) {
  
                      consume(tokens, dataType, true); // PRECISION
                      if (canConsume(tokens, dataType, true, COMMA)) {
                          consume(tokens, dataType, true); // fractional seconds precision
                      }
                      canConsume(tokens, dataType, true, R_PAREN);
                  } else {
                      LOGGER.debug("  WARNING:  PROBLEM parsing INTERVAL data type. Check your DDL for incomplete statement.");
                  }
              } else {
                  LOGGER.debug("  WARNING:  PROBLEM parsing INTERVAL data type. Check your DDL for incomplete statement.");
              }
          }
  
          return dataType;
      }