docs: static public SFTimestamp getSFTimestamp(String timestampStr, int scale,
                                             int internalColumnType,
                                             long resultVersion,
                                             TimeZone sessionTZ,
                                             SFSession session)
    throws SFException
    {
      logger.debug(
          "public Timestamp getTimestamp(int columnIndex)");
  
      try
      {
        TimeUtil.TimestampType tsType = null;
  
        switch (internalColumnType)
        {
          case Types.TIMESTAMP:
            tsType = TimeUtil.TimestampType.TIMESTAMP_NTZ;
            break;
          case SnowflakeUtil.EXTRA_TYPES_TIMESTAMP_TZ:
            tsType = TimeUtil.TimestampType.TIMESTAMP_TZ;
            logger.trace(
                "Handle timestamp with timezone {} encoding: {}",
                (resultVersion > 0 ? "new" : "old"), timestampStr);
            break;
          case SnowflakeUtil.EXTRA_TYPES_TIMESTAMP_LTZ:
            tsType = TimeUtil.TimestampType.TIMESTAMP_LTZ;
            break;
        }
  
        // Construct a timestamp
        return TimeUtil.getSFTimestamp(timestampStr, scale,
                                       tsType, resultVersion, sessionTZ);
      }
      catch (IllegalArgumentException ex)
      {
        throw (SFException) IncidentUtil.generateIncidentV2WithException(
            session,
            new SFException(ErrorCode.IO_ERROR,
                            "Invalid timestamp value: " + timestampStr),
            null,
            null);
      }
    }