docs: protected DataType parseDateTimeType( DdlTokenStream tokens ) throws ParsingException {
          DataType dataType = null;
          String typeName = null;
  
          if (tokens.matches(DataTypes.DTYPE_DATE)) {
              dataType = new DataType();
              typeName = consume(tokens, dataType, false, DataTypes.DTYPE_DATE);
              dataType.setName(typeName);
          } else if (tokens.matches(DataTypes.DTYPE_TIME)) {
              dataType = new DataType();
              typeName = consume(tokens, dataType, false, DataTypes.DTYPE_TIME);
              dataType.setName(typeName);
  
              int precision = 0;
              if (tokens.matches(L_PAREN)) {
                  precision = (int)parseBracketedLong(tokens, dataType);
              }
              dataType.setPrecision(precision);
  
              canConsume(tokens, dataType, true, "WITH", "TIME", "ZONE");
          } else if (tokens.matches(DataTypes.DTYPE_TIMESTAMP)) {
              dataType = new DataType();
              typeName = consume(tokens, dataType, false, DataTypes.DTYPE_TIMESTAMP);
              dataType.setName(typeName);
  
              int precision = 0;
              if (tokens.matches(L_PAREN)) {
                  precision = (int)parseBracketedLong(tokens, dataType);
              }
              dataType.setPrecision(precision);
  
              canConsume(tokens, dataType, true, "WITH", "TIME", "ZONE");
          }
  
          return dataType;
      }