메타데이터 - 매개 변수 및 결과
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
이 항목에서는 날짜 및 시간 데이터 형식에 대한 IPD(구현 매개 변수 설명자) 및 IRD(구현 행 설명자) 필드에 반환되는 항목에 대해 설명합니다.
IPD 필드에 반환된 정보
IPD 필드에 다음 정보가 반환됩니다.
매개 변수 형식 | date | time | smalldatetime | Datetime | datetime2 | datetimeoffset |
---|---|---|---|---|---|---|
SQL_DESC_CASE_SENSITIVE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
SQL_DESC_DATETIME_INTERVAL_PRECISION | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
SQL_DESC_TYPE | SQL_TYPE_DATE | SQL_SS_TYPE_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
SQL_DESC_TYPE_NAME | date | time | IRD의 smalldatetime, IPD의 datetime2 | IRD의 datetime, IPD의 datetime2 | datetime2 | datetimeoffset |
SQL_CA_SS_VARIANT_TYPE | SQL_C_TYPE_DATE | SQL_C_TYPE_BINARY | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_BINARY |
SQL_CA_SS_VARIANT_SQL_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
SQL_CA_SS_SERVER_TYPE | 해당 없음 | 해당 없음 | SQL_SS_TYPE_SMALLDATETIME | SQL_SS_TYPE_DATETIME | SQL_SS_TYPE_DEFAULT | 해당 없음 |
값 범위에 불연속성이 있는 경우가 있습니다. 예를 들어 8,10..16에서는 9가 없습니다. 이러한 경우는 소수 부분 자릿수가 0보다 커서 소수점을 추가했을 때 발생합니다.
datetime2는 드라이버가 모든 SQL_TYPE_TIMESTAMP 값을 서버에 전송하기 위한 공통 형식으로 사용하므로 smalldatetime 및 datetime의 형식 이름으로 반환됩니다.
SQL_CA_SS_VARIANT_SQL_TYPE 새 설명자 필드입니다. 이 필드는 애플리케이션이 sqlvariant(SQL_SSVARIANT) 열 및 매개 변수와 연결된 값 형식을 지정할 수 있도록 IRD 및 IPD에 추가되었습니다.
SQL_CA_SS_SERVER_TYPE 애플리케이션이 SQL_TYPE_TYPETIMESTAMP 바인딩된 매개 변수의 값(또는 C 형식의 SQL_C_TYPE_TIMESTAMP SQL_SS_VARIANT)이 서버에 전송되는 방식을 제어할 수 있도록 하는 새로운 IPD 전용 필드입니다. SQLExecute 또는 SQLExecDirect가 호출될 때 SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP(또는 SQL_SS_VARIANT C 형식이 SQL_C_TYPE_TIMESTAMP 경우) SQL_CA_SS_SERVER_TYPE 값은 다음과 같이 매개 변수 값의 TDS(테이블 형식 데이터 스트림) 형식을 결정합니다.
SQL_CA_SS_SERVER_TYPE 값 | SQL_DESC_PRECISION 유효한 값 | SQL_DESC_LENGTH 유효한 값 | TDS 형식 |
---|---|---|---|
SQL_SS_TYPE_DEFAULT | 0..7 | 19, 21..27 | datetime2 |
SQL_SS_TYPE_SMALLDATETIME | 0 | 19 | smalldatetime |
SQL_SS_TYPE_DATETIME | 3 | 23 | 날짜/시간 |
SQL_CA_SS_SERVER_TYPE 기본 설정은 SQL_SS_TYPE_DEFAULT. SQL_DESC_PRECISION 및 SQL_DESC_LENGTH 설정은 위의 표에 설명된 대로 SQL_CA_SS_SERVER_TYPE 설정으로 유효성을 검사합니다. 이 유효성 검사에 실패하면 SQL_ERROR가 반환되고 SQLState 07006 및 "제한된 데이터 형식 특성을 위반했습니다"라는 메시지가 포함된 진단 레코드가 기록됩니다. SQL_CA_SS_SERVER_TYPE이 SQL_SS_TYPE DEFAULT 이외의 값으로 설정되고 DESC_CONCISE_TYPE이 SQL_TYPE_TIMESTAMP가 아닌 경우에도 이 오류가 반환됩니다. 이러한 유효성 검사는 설명자 일관성 유효성 검사가 발생할 때 수행됩니다. 예를 들면 다음과 같습니다.
SQL_DESC_DATA_PTR이 변경된 경우
준비 또는 실행 시간에 SQLExecute, SQLExecDirect, SQLSetPos 또는 SQLBulkOperations를 호출하는 경우
애플리케이션이 지연된 준비를 사용하지 않도록 설정한 상태에서 SQLPrepare를 호출하거나 준비되었지만 실행되지 않은 문에 대해 SQLNumResultCols, SQLDescribeCol 또는 SQLDescribeParam을 호출하여 지연되지 않은 준비를 강제하는 경우
SQLSetDescField를 호출하여 SQL_CA_SS_SERVER_TYPE 설정하는 경우 해당 값은 SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME 또는 SQL_SS_TYPE_DATETIME 합니다. 그렇지 않은 경우 SQL_ERROR 반환되고 진단 레코드가 SQLState HY092 및 "잘못된 특성/옵션 식별자"라는 메시지와 함께 기록됩니다.
SQL_CA_SS_SERVER_TYPE 특성은 datetime 및 smalldatetime에서 지원하는 기능에 따라 달라지는 애플리케이션에서 사용할 수 있지만 datetime2는 사용할 수 없습니다. 예를 들어 datetime2에는 dateadd 및 datediif 함수를 사용해야 하는 반면 datetime 및 smalldatetime은 산술 연산자도 허용합니다. 대부분의 애플리케이션은 이 특성을 사용할 필요가 없으며 해당 사용은 피해야 합니다.
IRD 필드에 반환된 정보
다음 정보가 IRD 필드에 반환됩니다.
열 유형 | date | time | smalldatetime | Datetime | datetime2 | datetimeoffset |
---|---|---|---|---|---|---|
SQL_DESC_AUTO_UNIQUE_VALUE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
SQL_DESC_CASE_SENSITIVE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
SQL_DESC_DATETIME_INTERVAL_PRECISION | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
SQL_DESC_DISPLAY_SIZE | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 2 | 19, 21..27 | 26, 28..34 |
SQL_DESC_LITERAL_PREFIX | ' | ' | ' | ' | ' | ' |
SQL_DESC_LITERAL_SUFFIX | ' | ' | ' | ' | ' | ' |
SQL_DESC_LOCAL_TYPE_NAME | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
SQL_DESC_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE |
SQL_DESC_TYPE | SQL_DATETIME | SQL_SS_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
SQL_DESC_TYPE_NAME | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
SQL_DESC_UNSIGNED | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE |