시간, 날짜 및 간격 함수

다음 표에서는 ODBC 스칼라 함수 집합에 포함된 시간 및 날짜 함수를 나열합니다. 애플리케이션은 정보 유형이 SQL_TIMEDATE_FUNCTIONS SQLGetInfo를 호출하여 드라이버에서 지원하는 시간 및 날짜 함수를 결정할 수 있습니다.

timestamp_exp 나타내는 인수는 열의 이름, 다른 스칼라 함수의 결과 또는 ODBC 시간 이스케이프, ODBC-date- 이스케이프 또는 ODBC-timestamp-escape(기본 데이터 형식을 SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE 또는 SQL_TYPE_TIMESTAMP 나타낼 수 있는 ODBC-timestamp-escape일 수 있습니다.

date_exp 나타내는 인수는 열의 이름, 다른 스칼라 함수의 결과 또는 ODBC-date-escape 또는 ODBC-timestamp-escape일 수 있습니다. 여기서 기본 데이터 형식은 SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE 또는 SQL_TYPE_TIMESTAMP 나타낼 수 있습니다.

time_exp 나타내는 인수는 열의 이름, 다른 스칼라 함수의 결과 또는 ODBC 시간 이스케이프 또는 ODBC-timestamp-escape일 수 있습니다. 여기서 기본 데이터 형식은 SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME 또는 SQL_TYPE_TIMESTAMP 나타낼 수 있습니다.

SQL-92에 맞게 CURRENT_DATE, CURRENT_TIME 및 CURRENT_TIMESTAMP 시간 제한 스칼라 함수가 ODBC 3.0에 추가되었습니다.

함수 설명
CURRENT_DATE( ) (ODBC 3.0) 현재 날짜를 반환합니다.
CURRENT_TIME[(시간 정밀도)] (ODBC 3.0) 현재 현지 시간을 반환합니다. 시간 정밀도 인수는 반환된 값의 초 정밀도를 결정합니다.
CURRENT_TIMESTAMP
[(타임스탬프 정밀도)] (ODBC 3.0)
현재 현지 날짜 및 현지 시간을 타임스탬프 값으로 반환합니다. 타임스탬프 정밀도 인수는 반환된 타임스탬프의 초 정밀도를 결정합니다.
CURDATE( ) (ODBC 1.0) 현재 날짜를 반환합니다.
CURTIME( ) (ODBC 1.0) 현재 현지 시간을 반환합니다.
DAYNAME(date_exp) (ODBC 2.0) date_exp 일 부분에 대한 데이터 원본별 이름(예: 일요일~토요일 또는 일요일~토)을 포함하는 문자 문자열을 반환하고, 영어를 사용하는 데이터 원본의 경우 Sonntag를 통해 Samstag를 통해 독일어를 사용하는 데이터 원본을 반환합니다.
DAYOFMONTH(date_exp) (ODBC 1.0) date_exp 월 필드를 기반으로 한 월의 일을 1-31 범위의 정수 값으로 반환합니다.
DAYOFWEEK(date_exp) (ODBC 1.0) date_exp 주 필드를 기준으로 요일을 1-7 범위의 정수 값으로 반환합니다. 여기서 1은 일요일을 나타냅니다.
DAYOFYEAR(date_exp) (ODBC 1.0) date_exp 연도 필드를 기준으로 1-366 범위의 정수 값으로 해당 연도의 일을 반환합니다.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) 추출 소스추출 필드 부분을 반환합니다. 추출 소스 인수는 datetime 또는 interval 식입니다. 추출 필드 인수는 다음 키워드 중 하나일 수 있습니다.

연도 월 일 시간 분 초

반환된 값의 전체 자릿수는 구현에서 정의됩니다. SECOND를 지정하지 않는 한 소수 자릿수는 0입니다. 이 경우 소수 자릿수는 추출 소스 필드의 소수 자릿수 초 정밀도보다 작지 않습니다.
HOUR(time_exp) (ODBC 1.0) time_exp 시간 필드를 기준으로 시간을 0-23 범위의 정수 값으로 반환합니다.
MINUTE(time_exp) (ODBC 1.0) time_exp 분 필드를 기준으로 분을 0-59 범위의 정수 값으로 반환합니다.
MONTH(date_exp) (ODBC 1.0) date_exp 월 필드를 기준으로 1-12 범위의 정수 값으로 월을 반환합니다.
MONTHNAME(date_exp) (ODBC 2.0) date_exp 월 부분에 대해 월의 데이터 원본별 이름(예: 영어 또는 독일어를 사용하는 데이터 원본의 경우 Dezember를 통해 Januar를 사용하는 데이터 원본의 경우 1월~12월~ 12월)을 포함하는 문자 문자열을 반환합니다.
NOW( ) (ODBC 1.0) 현재 날짜 및 시간을 타임스탬프 값으로 반환합니다.
QUARTER(date_exp) (ODBC 1.0) date_exp 분기를 1-4 범위의 정수 값으로 반환합니다. 여기서 1은 1월 1일부터 3월 31일까지를 나타냅니다.
SECOND(time_exp) (ODBC 1.0) time_exp 두 번째 필드를 기준으로 두 번째 필드를 0-59 범위의 정수 값으로 반환합니다.
TIMESTAMPADD(interval, integer_exp, timestamp_exp) (ODBC 2.0) 형식 간격의 integer_exp 간격을 timestamp_exp 추가하여 계산된 타임스탬프를 반환합니다. 유효한 간격은 다음과 같은 키워드입니다.

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

소수 자릿수 초는 수십억 초 단위로 표현됩니다. 예를 들어 다음 SQL 문은 각 직원의 이름과 1주년 날짜를 반환합니다.

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

timestamp_exp 시간 값이고 간격이 일, 주, 월, 분기 또는 연도를 지정하는 경우 timestamp_exp 날짜 부분은 결과 타임스탬프를 계산하기 전에 현재 날짜로 설정됩니다.

timestamp_exp 날짜 값이고 간격이 소수 자릿수 초, 초, 분 또는 시간을 지정하는 경우 결과 타임스탬프를 계산하기 전에 timestamp_exp 시간 부분이 0으로 설정됩니다.

애플리케이션은 SQL_TIMEDATE_ADD_INTERVALS 옵션을 사용하여 SQLGetInfo를 호출하여 데이터 원본이 지원하는 간격을 결정합니다.
TIMESTAMPDIFF(interval, timestamp_exp1, timestamp_exp2) (ODBC 2.0) timestamp_exp2 timestamp_exp1보다 큰 형식 간격의 정수 수를 반환합니다. 유효한 간격은 다음과 같은 키워드입니다.

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

소수 자릿수 초는 수십억 초 단위로 표현됩니다. 예를 들어 다음 SQL 문은 각 직원의 이름과 고용된 연도 수를 반환합니다.

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

타임스탬프 식이 시간 값이고 간격 이 일, 주, 월, 분기 또는 연도를 지정하는 경우 타임스탬프 간의 차이를 계산하기 전에 해당 타임스탬프의 날짜 부분이 현재 날짜로 설정됩니다.

타임스탬프 식이 날짜 값이고 간격 이 소수 자릿수 초, 초, 분 또는 시간을 지정하는 경우 타임스탬프 간의 차이를 계산하기 전에 해당 타임스탬프의 시간 부분이 0으로 설정됩니다.

애플리케이션은 SQL_TIMEDATE_DIFF_INTERVALS 옵션을 사용하여 SQLGetInfo를 호출하여 데이터 원본이 지원하는 간격을 결정합니다.
WEEK(date_exp) (ODBC 1.0) date_exp 주 필드를 기반으로 한 연도의 주를 1-53 범위의 정수 값으로 반환합니다.
YEAR(date_exp) (ODBC 1.0) date_exp 연도 필드를 기준으로 연도를 정수 값으로 반환합니다. 범위는 데이터 원본에 따라 다릅니다.