code: 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);
      }
    }
docs: Convert a timestamp internal value (scaled number of seconds + fractional
  seconds) into a SFTimestamp.
  
  @param timestampStr       timestamp object
  @param scale              timestamp scale
  @param internalColumnType snowflake timestamp type
  @param resultVersion      For new result version, timestamp with timezone is formatted as
  the seconds since epoch with fractional part in the decimal followed
  by time zone index. E.g.: "123.456 1440". Here 123.456 is the * number
  of seconds since epoch and 1440 is the timezone index.
  @param sessionTZ          session timezone
  @param session            session object
  @return converted snowflake timestamp object
  @throws SFException if timestampStr is an invalid timestamp