35.6. pgtypes 라이브러리

pgtypes 라이브러리 맵포스트그레SQL데이터베이스 유형을 C 프로그램에서 사용할 수 있는 C 유형으로 변환합니다. 또한 C 내에서 해당 유형으로 기본 계산을 수행하는 기능을 제공합니다. 즉,PostgreSQL서버. 다음 예를 참조하세요.

EXEC SQL 시작 선언 섹션;
   날짜 날짜1;
   타임스탬프 ts1, tsout;
   간격 iv1;
   문자 *출력;
EXEC SQL END 선언 섹션;

PGTYPESdate_today(&date1);
EXEC SQL SELECT 시작됨, 기간 INTO :ts1, :iv1 FROM datetbl WHERE d=:date1;
PGTYPEStimestamp_add_interval(&ts1, &iv1, &tsout);
out = PGTYPEStimestamp_to_asc(&tsout);
printf("시작 + 기간: %s\n", out);
PGTYPESchar_free(아웃);

35.6.1. 문자열

다음과 같은 일부 기능PGTYPESnumeric_to_asc새로 할당된 문자열에 대한 포인터를 반환합니다. 이 결과는 다음을 사용하여 해제되어야 합니다.PGTYPESchar_free대신무료. (이는 때때로 동일한 라이브러리에서 메모리 할당 및 해제를 수행해야 하는 Windows에서만 중요합니다.)

35.6.2. 숫자 유형

숫자 유형은 임의의 정밀도로 계산을 수행하는 기능을 제공합니다. 보다롤 토토 42_007에 해당하는 유형에 대한포스트그레SQL서버. 임의의 정밀도로 인해 이 변수는 동적으로 확장 및 축소할 수 있어야 합니다. 이것이 바로 힙에 숫자 변수만 생성할 수 있는 이유입니다.PGTYPESnumeric_new그리고PGTYPESnumeric_free함수. 유사하지만 정밀도가 제한된 10진수 유형은 힙뿐만 아니라 스택에서도 생성될 수 있습니다.

다음 함수는 숫자 유형 작업에 사용할 수 있습니다:

PGTYPESnumeric_new

새로 할당된 숫자 변수에 대한 포인터를 요청합니다.

숫자 *PGTYPESnumeric_new(void);
PGTYPESnumeric_free

숫자 유형을 해제하고 모든 메모리를 해제합니다.

void PGTYPESnumeric_free(숫자 *var);
PGTYPESnumeric_from_asc

문자열 표기법에서 숫자 유형을 분석합니다.

숫자 *PGTYPESnumeric_from_asc(char *str, char **endptr);

유효한 형식은 예를 들면 다음과 같습니다:-2, .794, +3.44, 592.49E07또는-32.84e-4. 값을 성공적으로 구문 분석할 수 있으면 유효한 포인터가 반환되고, 그렇지 않으면 NULL 포인터가 반환됩니다. 현재 ECPG는 항상 전체 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것을 지원하지 않습니다.*endptr. 안전하게 설정할 수 있습니다endptrNULL로.

PGTYPESnumeric_to_asc

다음에 의해 할당된 문자열에 대한 포인터를 반환합니다.malloc숫자 유형의 문자열 표현을 포함하는번호.

char *PGTYPESnumeric_to_asc(숫자 *num, int dscale);

숫자 값은 다음과 같이 인쇄됩니다.dscale십진수, 필요한 경우 반올림 적용. 결과는 다음을 사용하여 해제되어야 합니다.PGTYPESchar_free().

PGTYPESnumeric_add

두 개의 숫자 메이저 토토 사이트 세 번째 변수에 추가합니다.

int PGTYPESnumeric_add(숫자 *var1, 숫자 *var2, 숫자 *결과);

함수는 메이저 토토 사이트 추가합니다var1그리고var2결과 변수에결과. 이 함수는 성공하면 0을 반환하고 오류가 발생하면 -1을 반환합니다.

PGTYPESnumeric_sub

두 개의 숫자 변수를 빼고 세 번째 변수에 결과를 반환합니다.

int PGTYPESnumeric_sub(숫자 *var1, 숫자 *var2, 숫자 *result);

함수는 메이저 토토 사이트 뺍니다var2변수에서var1. 작업 결과는 변수에 저장됩니다.결과. 이 함수는 성공하면 0을 반환하고 오류가 발생하면 -1을 반환합니다.

PGTYPESnumeric_mul

두 개의 숫자 변수를 곱하고 그 결과를 세 번째 변수로 반환합니다.

int PGTYPESnumeric_mul(숫자 *var1, 숫자 *var2, 숫자 *result);

함수는 메이저 토토 사이트 곱합니다var1그리고var2. 작업 결과는 변수에 저장됩니다.결과. 이 함수는 성공하면 0을 반환하고 오류가 발생하면 -1을 반환합니다.

PGTYPESnumeric_div

두 개의 숫자 변수를 나누고 결과를 세 번째 변수로 반환합니다.

int PGTYPESnumeric_div(숫자 *var1, 숫자 *var2, 숫자 *결과);

함수는 메이저 토토 사이트 나눕니다.var1byvar2. 작업 결과는 변수에 저장됩니다.결과. 이 함수는 성공하면 0을 반환하고 오류가 발생하면 -1을 반환합니다.

PGTYPESnumeric_cmp

두 개의 숫자 메이저 토토 사이트 비교하십시오.

int PGTYPESnumeric_cmp(숫자 *var1, 숫자 *var2)

이 함수는 두 개의 숫자 메이저 토토 사이트 비교합니다. 오류가 있는 경우,INT_MAX반환되었습니다. 성공하면 함수는 세 가지 가능한 결과 중 하나를 반환합니다.

  • 1, 만약var1보다 큼var2

  • -1, ifvar1보다 작음var2

  • 0, 만약var1그리고var2동등하다

PGTYPESnumeric_from_int

int 메이저 토토 사이트 숫자 변수로 변환합니다.

int PGTYPESnumeric_from_int(signed int int_val, 숫자 *var);

이 함수는 부호 있는 int 유형의 메이저 토토 사이트 받아들이고 이를 숫자 변수에 저장합니다.var. 성공하면 0이 반환되고, 실패하면 -1이 반환됩니다.

PGTYPESnumeric_from_long

long int 메이저 토토 사이트 숫자 변수로 변환합니다.

int PGTYPESnumeric_from_long(signed long int long_val, 숫자 *var);

이 함수는 signed long int 유형의 메이저 토토 사이트 받아들이고 이를 숫자 변수에 저장합니다.var. 성공하면 0이 반환되고, 실패하면 -1이 반환됩니다.

PGTYPESnumeric_copy

하나의 숫자 메이저 토토 사이트 다른 변수에 복사합니다.

int PGTYPESnumeric_copy(숫자 *src, 숫자 *dst);

이 함수는 변수의 값을 복사합니다.src메이저 토토 사이트 가리킵니다dst을 가리킵니다. 성공하면 0을 반환하고, 오류가 발생하면 -1을 반환합니다.

PGTYPESnumeric_from_double

double 유형의 메이저 토토 사이트 숫자로 변환합니다.

int PGTYPESnumeric_from_double(double d, 숫자 *dst);

이 함수는 double 유형의 변수를 받아들이고 그 결과를 변수에 저장합니다.dst을 가리킵니다. 성공하면 0을 반환하고, 오류가 발생하면 -1을 반환합니다.

PGTYPESnumeric_to_double

숫자 유형의 메이저 토토 사이트 double로 변환합니다.

int PGTYPESnumeric_to_double(숫자 *nv, double *dp)

이 함수는 다음과 같은 변수의 숫자 값을 변환합니다.nv이중 메이저 토토 사이트 가리킵니다.dp을 가리킵니다. 성공하면 0을 반환하고 오버플로를 포함하여 오류가 발생하면 -1을 반환합니다. 오버플로 시 전역 변수errno다음으로 설정됩니다PGTYPES_NUM_OVERFLOW추가로.

PGTYPESnumeric_to_int

숫자 유형의 메이저 토토 사이트 정수로 변환합니다.

int PGTYPESnumeric_to_int(숫자 *nv, int *ip);

이 함수는 변수의 숫자 값을 변환합니다.nv정수 메이저 토토 사이트 가리킵니다.ip을 가리킵니다. 성공하면 0을 반환하고 오버플로를 포함하여 오류가 발생하면 -1을 반환합니다. 오버플로 시 전역 변수errno다음으로 설정됩니다PGTYPES_NUM_OVERFLOW추가로.

PGTYPESnumeric_to_long

숫자 유형의 메이저 토토 사이트 긴 변수로 변환합니다.

int PGTYPESnumeric_to_long(숫자 *nv, long *lp);

이 함수는 변수의 숫자 값을 변환합니다.nv긴 정수 메이저 토토 사이트 가리킵니다.lp을 가리킵니다. 성공하면 0을 반환하고 오버플로를 포함하여 오류가 발생하면 -1을 반환합니다. 오버플로 시 전역 변수errno다음으로 설정됩니다PGTYPES_NUM_OVERFLOW추가로.

PGTYPESnumeric_to_decimal

숫자 유형의 메이저 토토 사이트 십진수로 변환합니다.

int PGTYPESnumeric_to_decimal(숫자 *src, 십진수 *dst);

이 함수는 변수의 숫자 값을 변환합니다.src10진수 메이저 토토 사이트 가리킵니다dst을 가리킵니다. 성공하면 0을 반환하고 오버플로를 포함하여 오류가 발생하면 -1을 반환합니다. 오버플로 시 전역 변수errno다음으로 설정됩니다PGTYPES_NUM_OVERFLOW추가로.

PGTYPESnumeric_from_decimal

10진수 유형의 메이저 토토 사이트 숫자로 변환합니다.

int PGTYPESnumeric_from_decimal(십진수 *src, 숫자 *dst);

이 함수는 변수의 십진수 값을 변환합니다.src숫자 메이저 토토 사이트 가리킵니다dst을 가리킨다. 성공하면 0을, 오류가 발생하면 -1을 반환합니다. 십진수 유형은 숫자 유형의 제한된 버전으로 구현되므로 이 변환에서는 오버플로가 발생할 수 없습니다.

35.6.3. 날짜 유형

C의 날짜 유형을 사용하면 프로그램에서 SQL 유형 날짜의 데이터를 처리할 수 있습니다. 보다PostgreSQL : 문서 : 13 : 8.5. 날짜/토토 커뮤니티 유형에 해당하는 유형에 대한PostgreSQL서버.

다음 함수는 날짜 유형 작업에 사용할 수 있습니다:

PGTYPESdate_from_timestamp

타임스탬프에서 날짜 부분을 추출합니다.

날짜 PGTYPESdate_from_timestamp(timestamp dt);

함수는 타임스탬프를 유일한 인수로 받고 이 타임스탬프에서 추출된 날짜 부분을 반환합니다.

PGTYPESdate_from_asc

텍스트 표현에서 날짜를 분석합니다.

날짜 PGTYPESdate_from_asc(char *str, char **endptr);

함수는 C char* 문자열을 받습니다.str및 C char* 문자열에 대한 포인터endptr. 현재 ECPG는 항상 전체 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것을 지원하지 않습니다.*endptr. 안전하게 설정할 수 있습니다endptrNULL로.

함수는 항상 MDY 형식의 날짜를 가정하며 현재 ECPG 내에서 이를 변경할 수 있는 변수가 없다는 점에 유의하세요.

표 35.2허용되는 입력 형식을 표시합니다.

표 35.2. 유효한 입력 형식PGTYPESdate_from_asc

입력 결과
1999년 1월 8일 1999년 1월 8일
1999-01-08 1999년 1월 8일
1/8/1999 1999년 1월 8일
1/18/1999 1999년 1월 18일
01/02/03 2003년 2월 1일
1999년 1월 8일 1999년 1월 8일
1999년 1월 8일 1999년 1월 8일
1999년 1월 8일 1999년 1월 8일
99년 1월 8일 1999년 1월 8일
99년 1월 8일 1999년 1월 8일
06년 1월 8일 2006년 1월 8일
1월 08-99 1999년 1월 8일
19990108 ISO 8601; 1999년 1월 8일
990108 ISO 8601; 1999년 1월 8일
1999.008 연도 및 일
J2451187 율리우스력의 날
기원전 99년 1월 8일 서기 99년

PGTYPESdate_to_asc

날짜 변수의 텍스트 표현을 반환합니다.

char *PGTYPESdate_to_asc(날짜 dDate);

함수는 날짜를 수신합니다d날짜유일한 매개변수입니다. 날짜가 형식으로 출력됩니다.1999-01-18, 즉,YYYY-MM-DD형식. 결과는 다음을 사용하여 해제되어야 합니다.PGTYPESchar_free().

PGTYPESdate_julmdy

날짜 유형의 변수에서 일, 월, 연도 값을 추출합니다.

void PGTYPESdate_julmdy(날짜 d, int *mdy);

함수는 날짜를 받습니다.d및 3개의 정수 값 배열에 대한 포인터mdy. 변수 이름은 순차적 순서를 나타냅니다.mdy[0]월의 숫자를 포함하도록 설정됩니다.mdy[1]일의 값으로 설정되며mdy[2]연도가 포함됩니다.

PGTYPESdate_mdyjul

날짜의 일, 월, 연도를 지정하는 3개의 정수 배열에서 날짜 값을 생성하십시오.

void PGTYPESdate_mdyjul(int *mdy, 날짜 *jdate);

함수는 3개의 정수 배열을 받습니다(mdy)을 첫 번째 인수로 사용하고 두 번째 인수로 연산 결과를 보유해야 하는 날짜 유형의 변수에 대한 포인터를 사용합니다.

PGTYPESdate_dayofweek

날짜 값에 대한 요일을 나타내는 숫자를 반환합니다.

int PGTYPESdate_dayofweek(날짜 d);

함수는 날짜 메이저 토토 사이트 받습니다.d유일한 인수로 이 날짜의 요일을 나타내는 정수를 반환합니다.

  • 0 - 일요일

  • 1 - 월요일

  • 2 - 화요일

  • 3 - 수요일

  • 4 - 목요일

  • 5 - 금요일

  • 6 - 토요일

PGTYPESdate_today

현재 날짜를 가져옵니다.

void PGTYPESdate_today(date *d);

함수는 날짜 변수에 대한 포인터를 받습니다(d) 현재 날짜로 설정됩니다.

PGTYPESdate_fmt_asc

형식 마스크를 사용하여 날짜 유형의 메이저 토토 사이트 텍스트 표현으로 변환합니다.

int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf);

함수는 변환할 날짜를 받습니다 (d날짜), 형식 마스크(fmtstring) 및 날짜의 텍스트 표현을 보유할 문자열(outbuf).

성공 시 0이 반환되고 오류가 발생하면 음수 값이 반환됩니다.

다음 리터럴은 사용할 수 있는 필드 지정자입니다:

  • dd- 해당 월의 날짜 수입니다.

  • mm- 해당 연도의 월 수입니다.

  • yy- 연도의 두 자리 숫자입니다.

  • yyyy- 연도를 4자리 숫자로 나타낸 숫자입니다.

  • ddd- 오늘의 이름(약어).

  • - 월 이름(약어).

다른 모든 문자는 출력 문자열에 1:1로 복사됩니다.

표 35.3몇 가지 가능한 형식을 나타냅니다. 그러면 이 기능을 사용하는 방법에 대한 아이디어를 얻을 수 있습니다. 모든 출력 라인은 동일한 날짜인 1959년 11월 23일을 기준으로 합니다.

표 35.3. 유효한 입력 형식PGTYPESdate_fmt_asc

형식 결과
mmddyy 112359
ddmmy 231159
yymmdd 591123
yy/mm/dd 59/11/23
yy mm dd 59 11 23
yy.mm.dd 59.11.23
.mm.yyyy.dd. .11.1959.23.
음. dd, yyyy 11월 1959년 23일
mmmm dd yyyy 1959년 11월 23일
yyyy dd mm 1959 23 11
ddd, 음. dd, yyyy 1959년 11월 23일 월요일
(ddd) 음. dd, yyyy (월) 1959년 11월 23일

PGTYPESdate_defmt_asc

형식 마스크를 사용하여 C를 변환문자*문자열을 날짜 유형의 값으로 변환합니다.

int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str);

함수는 작업 결과를 보유해야 하는 날짜 값에 대한 포인터를 받습니다(d), 날짜 구문 분석에 사용할 형식 마스크(fmt) 및 날짜의 텍스트 표현을 포함하는 C char* 문자열(str). 텍스트 표현은 형식 마스크와 일치해야 합니다. 그러나 문자열을 형식 마스크에 1:1로 매핑할 필요는 없습니다. 이 함수는 순차 순서만 분석하고 리터럴을 찾습니다.yy또는yyyy연도의 위치를 ​​나타냅니다.mm월의 위치를 ​​나타냄dd오늘의 위치를 ​​나타냅니다.

표 35.4몇 가지 가능한 형식을 나타냅니다. 이 기능을 사용하는 방법에 대한 아이디어를 얻을 수 있습니다.

표 35.4. 유효한 입력 형식rdefmtdate

형식 문자열 결과
ddmmy 21-2-54 1954-02-21
ddmmy 2-12-54 1954-12-02
ddmmy 20111954 1954-11-20
ddmmyy 130464 1964-04-13
mmm.dd.yyyy 1967년 3월 12일 1967-03-12
yy/mm/dd 1954년 2월 3일 1954-02-03
mmm.dd.yyyy 041269 1969-04-12
yy/mm/dd 2525년 7월에 인류는 28일째 살아날 것입니다. 2525-07-28
dd-mm-yy 나는 2525년 7월 28일에 말했습니다. 2525-07-28
mmm.dd.yyyy 9/14/58 1958-09-14
yy/mm/dd 47/03/29 1947-03-29
mmm.dd.yyyy 1975년 10월 28일 1975-10-28
mmddyy 1985년 11월 14일 1985-11-14

35.6.4. 타임스탬프 유형

C의 타임스탬프 유형을 사용하면 프로그램이 SQL 유형 타임스탬프의 데이터를 처리할 수 있습니다. 보다PostgreSQL : 문서 : 13 : 8.5. 날짜/토토 커뮤니티 유형에 해당하는 유형에 대한포스트그레SQL서버.

다음 함수는 타임스탬프 유형 작업에 사용할 수 있습니다:

PGTYPEStimestamp_from_asc

타임스탬프를 텍스트 표현에서 타임스탬프 변수로 분석합니다.

타임스탬프 PGTYPEStimestamp_from_asc(char *str, char **endptr);

함수는 구문 분석할 문자열을 받습니다(str) 및 C 문자에 대한 포인터*(endptr). 현재 ECPG는 항상 전체 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것을 지원하지 않습니다.*endptr. 안전하게 설정할 수 있습니다endptrNULL로.

이 함수는 성공 시 구문 분석된 타임스탬프를 반환합니다. 오류 발생 시,PGTYPESInvalidTimestamp반환되었으며errno다음으로 설정됨PGTYPES_TS_BAD_TIMESTAMP. 보다PGTYPESInvalidTimestamp이 값에 대한 중요한 참고사항입니다.

일반적으로 입력 문자열에는 허용된 날짜 지정, 공백 문자 및 허용된 시간 지정의 모든 조합이 포함될 수 있습니다. 시간대는 ECPG에서 지원되지 않습니다. 구문 분석할 수 있지만 다음과 같이 계산을 적용하지 않습니다.포스트그레SQL46711_46782

표 35.5입력 문자열에 대한 몇 가지 예가 포함되어 있습니다.

표 35.5. 유효한 입력 형식PGTYPEStimestamp_from_asc

입력 결과
1999-01-08 04:05:06 1999-01-08 04:05:06
1999년 1월 8일 04:05:06 PST 1999-01-08 04:05:06
1999-1-08 04:05:06.789-8 1999-01-08 04:05:06.789 (시간대 지정자는 무시됨)
J2451187 04:05-08:00 1999-01-08 04:05:00 (시간대 지정자 무시)

PGTYPEStimestamp_to_asc

날짜를 C 문자* 문자열로 변환합니다.

char *PGTYPEStimestamp_to_asc(timestamp tstamp);

함수는 타임스탬프를 수신합니다.tstamp유일한 인수로 사용되며 타임스탬프의 텍스트 표현이 포함된 할당된 문자열을 반환합니다. 결과는 다음을 사용하여 해제되어야 합니다.PGTYPESchar_free().

PGTYPEStimestamp_current

현재 타임스탬프를 검색하세요.

void PGTYPEStimestamp_current(timestamp *ts);

함수는 현재 타임스탬프를 검색하고 이를 타임스탬프 변수에 저장합니다.ts다음을 가리킨다.

PGTYPEStimestamp_fmt_asc

형식 마스크를 사용하여 타임스탬프 변수를 C 문자*로 변환합니다.

int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmtstr);

함수는 첫 번째 인수로 변환할 타임스탬프에 대한 포인터를 받습니다(ts), 출력 버퍼에 대한 포인터(출력), 출력 버퍼에 할당된 최대 길이(str_len) 및 변환에 사용할 형식 마스크(fmtstr).

성공하면 함수는 0을 반환하고 오류가 발생하면 음수 값을 반환합니다.

형식 마스크에 다음 형식 지정자를 사용할 수 있습니다. 형식 지정자는strftime함수libc. 형식이 아닌 지정자는 출력 버퍼에 복사됩니다.

  • %A- 전체 요일 이름의 국가 표현으로 대체됩니다.

  • %a- 축약된 요일 이름의 국가 표현으로 대체됩니다.

  • %B- 전체 월 이름의 국가 표현으로 대체됩니다.

  • %b- 약식 월 이름의 국가 표현으로 대체됩니다.

  • %C- 십진수로 (연도/100)로 대체됩니다. 한 자리 숫자 앞에는 0이 옵니다.

  • %c- 국가별 시간 및 날짜 표현으로 대체됩니다.

  • %D-는와 동일합니다.%m/%d/%y.

  • %d- 십진수(01~31)의 날짜로 대체됩니다.

  • %E* %O*- POSIX 로케일 확장. 시퀀스%Ec %EC %예 %EX %에이 %EY %Od %Oe %OH %OI %옴 %OM %OS %Ou %OU %OV %아야 %OW %Oy대체 표현을 제공해야 합니다.

    추가로%OB대체 월 이름을 나타내기 위해 구현되었습니다(일을 언급하지 않고 독립형으로 사용됨).

  • %e- 십진수(1~31)의 날짜로 대체됩니다. 한 자리 숫자 앞에는 공백이 옵니다.

  • %F-는와 동일합니다.%Y-%m-%d.

  • %G- 세기를 포함한 십진수로 연도를 대체합니다. 올해는 주의 대부분을 포함하는 해입니다(월요일이 한 주의 첫날임).

  • %g- 에서와 같은 연도로 대체됩니다.%G, 그러나 세기가 없는 십진수(00-99)입니다.

  • %H- 십진수(00-23)의 시간(24시간제)으로 대체됩니다.

  • %h-와 동일%b.

  • %I- 십진수(01-12)의 시간(12시간제)으로 대체됩니다.

  • %j- 십진수(001-366)의 날짜로 대체됩니다.

  • %k- 십진수(0-23)의 시간(24시간제)으로 대체됩니다. 한 자리 숫자 앞에는 공백이 옵니다.

  • %l- 십진수(1-12)의 시간(12시간제)으로 대체됩니다. 한 자리 숫자 앞에는 공백이 옵니다.

  • %M- 십진수(00-59)의 분으로 대체됩니다.

  • %m- 십진수(01~12)의 월로 대체됩니다.

  • %n- 개행 문자로 대체됩니다.

  • %O*-와 동일%E*.

  • %p- 다음 중 하나의 국가 대표로 대체됩니다.안티 메리디엠또는포스트 메리디엠적절하게.

  • %R-는와 동일합니다.%H:%M.

  • %r-는와 동일합니다.%I:%M:%S %p.

  • %S- 10진수(00-60)의 초로 대체됩니다.

  • %s- UTC Epoch 이후의 초 수로 대체됩니다.

  • %T-는와 동일합니다.%H:%M:%S

  • %t- 탭으로 대체됩니다.

  • %U- 해당 연도의 주 번호(주의 첫 번째 날인 일요일)를 십진수(00-53)로 대체합니다.

  • %u- 십진수(1~7)로 평일(월요일이 한 주의 첫 번째 날)로 대체됩니다.

  • %V- 해당 연도의 주 번호(주의 첫 번째 날인 월요일)를 십진수(01-53)로 대체합니다. 새해에 1월 1일이 포함된 주가 4일 이상인 경우 이는 1주입니다. 그렇지 않으면 전년도의 마지막 주가 되고 다음 주가 1주가 됩니다.

  • %v-는와 동일합니다.%e-%b-%Y.

  • %W- 해당 연도의 주 번호(주의 첫 번째 날인 월요일)를 십진수(00-53)로 대체합니다.

  • %w- 십진수(0-6)로 평일(일요일의 첫 번째 날)로 대체됩니다.

  • %X- 시간의 국가적 표현으로 대체됩니다.

  • %x- 날짜의 국가별 표현으로 대체됩니다.

  • %Y- 십진수로 세기가 포함된 연도로 대체됩니다.

  • %y- 세기가 없는 연도를 십진수(00-99)로 대체합니다.

  • %Z- 시간대 이름으로 대체됩니다.

  • %z- UTC의 시간대 오프셋으로 대체됩니다. 선행 더하기 기호는 UTC 동쪽을 나타내고 빼기 기호는 UTC 서쪽을 나타내며 시간과 분 뒤에는 각각 두 자리 숫자가 있고 그 사이에는 구분 기호가 없습니다(RFC 822 날짜 헤더의 일반적인 형식).

  • %+- 국가별 날짜 및 시간 표현으로 대체됩니다.

  • %-*- GNU libc 확장. 수치 출력을 수행할 때 패딩을 수행하지 마십시오.

  • $_* - GNU libc 확장. 패딩을 위한 공간을 명시적으로 지정합니다.

  • %0*- GNU libc 확장. 패딩에 대해 명시적으로 0을 지정합니다.

  • %%- 다음으로 대체됨%.

PGTYPEStimestamp_sub

하나의 타임스탬프를 다른 타임스탬프에서 빼고 결과를 간격 유형의 변수에 저장합니다.

int PGTYPEStimestamp_sub(타임스탬프 *ts1, 타임스탬프 *ts2, 간격 *iv);

함수는 타임스탬프 변수를 뺄 것입니다.ts2다음 타임스탬프 메이저 토토 사이트 가리킵니다.ts1다음 간격 변수에 결과를 가리키고 저장합니다iv다음을 가리킨다.

성공하면 함수는 0을 반환하고 오류가 발생하면 음수 값을 반환합니다.

PGTYPEStimestamp_defmt_asc

형식 지정 마스크를 사용하여 텍스트 표현에서 타임스탬프 값을 구문 분석합니다.

int PGTYPEStimestamp_defmt_asc(char *str, char *fmt, timestamp *d);

함수는 변수에 있는 타임스탬프의 텍스트 표현을 받습니다str변수에 사용할 서식 마스크도 포함fmt. 결과는 다음과 같은 변수에 저장됩니다.d다음을 가리킨다.

포맷 마스크인 경우fmt이 NULL이면 함수는 기본 형식화 마스크로 대체됩니다.%Y-%m-%d %H:%M:%S.

이것은 반대 기능입니다PGTYPEStimestamp_fmt_asc. 가능한 서식 지정 마스크 항목에 대해 알아보려면 해당 문서를 참조하세요.

PGTYPEStimestamp_add_interval

타임스탬프 변수에 간격 메이저 토토 사이트 추가합니다.

int PGTYPEStimestamp_add_interval(timestamp *tin, 간격 *span, timestamp *tout);

함수는 타임스탬프 변수에 대한 포인터를 받습니다.및 간격 변수에 대한 포인터스팬. 타임스탬프에 간격을 추가하고 결과 타임스탬프를 변수에 저장합니다.터우트다음을 가리킨다.

성공하면 함수는 0을 반환하고 오류가 발생하면 음수 값을 반환합니다.

PGTYPEStimestamp_sub_interval

타임스탬프 변수에서 간격 변수를 뺍니다.

int PGTYPEStimestamp_sub_interval(timestamp *tin, 간격 *span, timestamp *tout);

이 함수는 간격 변수를 뺍니다.스팬다음 타임스탬프 메이저 토토 사이트 가리킵니다.변수를 가리키고 결과를 저장합니다.터우트다음을 가리킨다.

성공하면 함수는 0을 반환하고 오류가 발생하면 음수 값을 반환합니다.

35.6.5. 간격 유형

C의 간격 유형을 사용하면 프로그램이 SQL 유형 간격의 데이터를 처리할 수 있습니다. 보다PostgreSQL : 문서 : 13 : 8.5. 날짜/토토 커뮤니티 유형에 해당하는 유형에 대한PostgreSQL서버.

다음 함수는 간격 유형 작업에 사용할 수 있습니다:

PGTYPESinterval_new

새로 할당된 간격 변수에 대한 포인터를 반환합니다.

간격 *PGTYPESinterval_new(void);
PGTYPESinterval_free

이전에 할당된 간격 변수의 메모리를 해제합니다.

void PGTYPESinterval_free(간격 *intvl);
PGTYPESinterval_from_asc

텍스트 표현에서 간격을 구문 분석합니다.

간격 *PGTYPESinterval_from_asc(char *str, char **endptr);

함수는 입력 문자열을 구문 분석합니다.str그리고 할당된 간격 변수에 대한 포인터를 반환합니다. 현재 ECPG는 항상 전체 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것을 지원하지 않습니다.*endptr. 안전하게 설정할 수 있습니다endptrNULL로.

PGTYPESinterval_to_asc

간격 유형의 메이저 토토 사이트 텍스트 표현으로 변환합니다.

char *PGTYPESinterval_to_asc(간격 *span);

이 함수는 간격 변수를 변환합니다.스팬C 문자*를 가리킵니다. 출력은 다음 예와 같습니다.@ 1일 12시간 59분 10초. 결과는 다음을 사용하여 해제되어야 합니다.PGTYPESchar_free().

PGTYPESinterval_copy

간격 유형의 메이저 토토 사이트 복사하세요.

int PGTYPESinterval_copy(간격 *intvlsrc, 간격 *intvldest);

함수는 간격 변수를 복사합니다.intvlsrc다음 메이저 토토 사이트 가리킵니다intvldest을 가리킨다. 먼저 대상 변수에 대한 메모리를 할당해야 합니다.

35.6.6. 십진수 유형

십진수 유형은 숫자 유형과 유사합니다. 그러나 최대 정밀도는 유효 숫자 30자리로 제한됩니다. 힙에서만 생성할 수 있는 숫자 유형과 달리 10진수 유형은 스택이나 힙에서 생성할 수 있습니다(함수 사용).PGTYPESdecimal_new그리고PGTYPESdecimal_free). 에는 소수 유형을 처리하는 다른 많은 함수가 있습니다.인포믹스에 설명된 호환 모드토토 사이트 PostgreSQL : 문서 : 13 : 35.15. Informix 호환성 모드.

다음 함수는 십진수 유형으로 작업하는 데 사용할 수 있으며 다음 함수에만 포함되어 있지 않습니다.libcompat도서관.

PGTYPESdecimal_new

새로 할당된 십진수 변수에 대한 포인터를 요청합니다.

십진수 *PGTYPESdecimal_new(void);
PGTYPESdecimal_free

십진수 유형을 해제하고 모든 메모리를 해제합니다.

void PGTYPESdecimal_free(십진수 *var);

35.6.7. pgtypeslib의 errno 값

PGTYPES_NUM_BAD_NUMERIC

인수는 숫자 변수를 포함해야 하지만(또는 숫자 변수를 가리켜야 함) 실제로 메모리 내 표현이 유효하지 않습니다.

PGTYPES_NUM_OVERFLOW

오버플로가 발생했습니다. 숫자 유형은 거의 임의의 정밀도를 처리할 수 있으므로 숫자 메이저 토토 사이트 다른 유형으로 변환하면 오버플로가 발생할 수 있습니다.

PGTYPES_NUM_UNDERFLOW

언더플로가 발생했습니다. 숫자 유형은 거의 임의의 정밀도를 처리할 수 있으므로 숫자 메이저 토토 사이트 다른 유형으로 변환하면 언더플로가 발생할 수 있습니다.

PGTYPES_NUM_DIVIDE_ZERO

0으로 나누기가 시도되었습니다.

PGTYPES_DATE_BAD_DATE

잘못된 날짜 문자열이 다음으로 전달되었습니다.PGTYPESdate_from_asc함수.

PGTYPES_DATE_ERR_EARGS

잘못된 인수가 전달되었습니다.PGTYPESdate_defmt_asc함수.

PGTYPES_DATE_ERR_ENOSHORTDATE

다음에 의해 입력 문자열에서 유효하지 않은 토큰이 발견되었습니다.PGTYPESdate_defmt_asc함수.

PGTYPES_INTVL_BAD_INTERVAL

잘못된 간격 문자열이 다음으로 전달되었습니다.PGTYPESinterval_from_asc함수이거나 잘못된 간격 값이 에 전달되었습니다.PGTYPESinterval_to_asc함수.

PGTYPES_DATE_ERR_ENOTDMY

다음의 일/월/년 지정이 일치하지 않습니다.PGTYPESdate_defmt_asc함수.

PGTYPES_DATE_BAD_DAY

다음에서 잘못된 월 값이 발견되었습니다.PGTYPESdate_defmt_asc함수.

PGTYPES_DATE_BAD_MONTH

다음에서 잘못된 월 값이 발견되었습니다.PGTYPESdate_defmt_asc함수.

PGTYPES_TS_BAD_TIMESTAMP

잘못된 타임스탬프 문자열 패스가 다음으로 전달되었습니다.PGTYPEStimestamp_from_asc함수 또는 잘못된 타임스탬프 값이에 전달되었습니다.PGTYPEStimestamp_to_asc함수.

PGTYPES_TS_ERR_EINFTIME

처리할 수 없는 컨텍스트에서 무한 타임스탬프 값이 발견되었습니다.

35.6.8. pgtypeslib의 특수 상수

PGTYPESInvalidTimestamp

잘못된 타임스탬프를 나타내는 타임스탬프 유형의 값. 이는 함수에 의해 반환됩니다.PGTYPEStimestamp_from_asc분석 오류 발생 시. 내부 표현으로 인해타임스탬프데이터 유형,PGTYPESInvalidTimestamp또한 동시에 유효한 타임스탬프입니다. 로 설정되어 있습니다.1899-12-31 23:59:59. 오류를 감지하려면 애플리케이션이 오류를 테스트할 뿐만 아니라PGTYPESInvalidTimestamp그러나 또한errno != 0각 호출 후PGTYPEStimestamp_from_asc.

수정 사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.