이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다배트맨 토토 PostgreSQL : 문서 : 17 : 34.6. PGTYPES 라이브러리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

31.8. PGTYPES 라이브러리

PGTYPES 라이브러리지도PostgreSQL데이터베이스 유형에 대한 데이터베이스 유형 C 프로그램에 사용할 수 있습니다. 또한 기능을 제공합니다 C 내에서 이러한 유형의 기본 계산, 즉 의 도움PostgreSQL서버. 다음 예를 참조하십시오.

Exec SQL 시작 선언 섹션;
   날짜 1;
   타임 스탬프 TS1, TSOUT;
   간격 IV1;
   char *out;
Exec SQL END DELLARE SECTION;

pgtypesdate_today (& date1);
Exec SQL SELECT SELECT : TS1, : DATETBL에서 IV1 여기서 D = : DATE1;
pgtypestimestamp_add_interval (& ts1, & iv1, & tsout);
out = pgtypestimestamp_to_asc (& tsout);
printf ( "시작 + 시간 : %s \ n", out);
무료 (out);

31.8.1. 그만큼 토토 캔 유형

토토 캔 유형은 임의의 계산을 수행하는 것을 제공합니다 정도. 보다PostgreSQL : 문서 : 8.2 : 윈 토토 유형동등한 유형의 경우postgresql서버. 때문에 임의 정밀도이 변수는 확장 할 수 있어야합니다. 그리고 동적으로 축소. 그렇기 때문에 만 만들 수 있습니다 를 통해 힙의 변수pgtypesnumeric_newandpgtypesnumeric_free함수. 소수점 비슷하지만 정밀도가 제한된 유형은 스택과 힙에 생성.

다음 함수는 숫자와 함께 작동하는 데 사용할 수 있습니다. 유형:

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. 값을 구문 분석 할 수있는 경우 성공적으로 유효한 포인터가 반환됩니다 바늘. 현재 ECPG는 항상 완전한 부분을 파싱합니다 문자열이므로 현재 저장을 지원하지 않습니다. 의 첫 번째 유효하지 않은 문자 주소*endptr. 안전하게 설정할 수 있습니다endptrto null.

pgtypesnumeric_to_asc

|Malloc토토 캔 유형의 문자열 표현Num.

char *pgtypesnumeric_to_asc (numeric *num, int dscale);

토토 캔 값은로 인쇄됩니다.dscale반올림이있는 10 진수 토토 캔 필요한 경우 적용.

pgtypesnumeric_add

세 번째 변수에 두 개의 토토 캔 변수를 추가합니다.

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

함수가 변수를 추가합니다var1andvar2결과 변수로결과. 함수는 성공시 0, -1의 경우 0을 반환합니다. 오류.

pgtypesnumeric_sub

두 개의 숫자 변수를 빼고 결과를 반환하십시오 세 번째로.

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

함수가 변수를 빼냅니다var2변수에서var1. 작업의 결과는입니다 변수에 저장결과. 함수는 성공시 0, -1의 경우 0을 반환합니다. 오류.

pgtypesnumeric_mul

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

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

함수는 변수를 곱합니다var1andvar2. 작업 결과는 변수에 저장됩니다결과. 함수는 0을 반환합니다 오류의 경우 성공 및 -1.

pgtypesnumeric_div

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

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

함수가 변수를 나눕니다var1byvar2. 그만큼 작업 결과는 변수에 저장됩니다결과. 함수는 0을 반환합니다 오류의 경우 성공 및 -1.

pgtypesnumeric_cmp

두 토토 캔 변수 비교.

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

이 기능은 두 가지 토토 캔 변수를 비교합니다. 경우에 오류,int_max반환됩니다. 성공시 기능은 가능한 세 가지 중 하나를 반환합니다 결과:

  • 1, ifvar1var2

  • -1, ifvar1더 작습니다 보다var2

  • 0, ifvar1andvar2동일합니다

pgtypesnumeric_from_int

int 변수를 토토 캔 변수로 변환합니다.

int pgtypesnumeric_from_int (서명 된 int_val, 숫자 *var);

이 함수는 유형의 변수를 수락합니다 토토 캔 변수에 저장var. 성공하면 0이 반환되고 -1 인치가 반환됩니다 실패의 경우.

pgtypesnumeric_from_long

긴 int 변수를 토토 캔 변수로 변환합니다.

int pgtypesnumeric_from_long (서명 long the long_val, 숫자 *var);

이 기능은 서명 된 유형의 변수를 허용합니다 int 및 토토 캔 변수에 저장var. 성공하면 0이 반환되고 -1 인치가 반환됩니다 실패의 경우.

pgtypesnumeric_copy

하나의 토토 캔 변수를 다른 토토 캔 변수로 복사하십시오.

int pgtypesnumeric_copy (Numeric *SRC, Numeric *DST);

이 함수는 변수의 값에 대해 복사합니다 저것SRC변수dst그것 오류가 발생하면 성공시 0을 반환하고 -1을 반환합니다.

pgtypesnumeric_from_double

유형의 변수를 숫자로 변환합니다.

int pgtypesnumeric_from_double (double d, numeric *dst);

이 함수는 유형의 변수를 허용합니다 결과를 변수에 저장dst성공시 0을 반환합니다 -1 오류가 발생하는 경우

pgtypesnumeric_to_double

유형 숫자의 변수를 이중으로 변환합니다.

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

함수는 숫자 값을 변수18999_19003이중 변수DP오류가 발생하면 성공시 0, -1을 반환합니다. 오버플로를 포함하여 발생합니다. 오버플로, 글로벌 변하기 쉬운errno로 설정됩니다pgtypes_num_overflow추가로.

pgtypesnumeric_to_int

유형 숫자의 변수를 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

유형 숫자의 변수를 10 진수로 변환합니다.

int pgtypesnumeric_to_decimal (Numeric *src, Decimal *dst);

함수는 숫자 값을에서 변환합니다 변수SRC소수점 변수dst오류가 발생하면 성공시 0, -1을 반환합니다. 오버플로를 포함하여 발생합니다. 오버플로, 글로벌 변하기 쉬운errno로 설정됩니다pgtypes_num_overflow추가로.

PGTYPESNUMERIC_FROM_DECIMAL

십진수의 변수를 숫자로 변환합니다.

int pgtypesnumeric_from_decimal (Decimal *Src, Numeric *dst);

함수는 소수점 값을 변수SRC숫자 변수dst오류가 발생하면 성공시 0, -1을 반환합니다. 발생합니다. 소수 유형은 a로 구현되므로 토토 캔 유형의 제한된 버전은 오버플로가 할 수 없습니다 이 전환으로 발생합니다.

31.8.2. 그만큼 날짜 유형

C의 날짜 유형을 통해 프로그램이 데이터를 처리 할 수 ​​있습니다. SQL 유형 날짜의. 보다섹션 8.5등가 입력PostgreSQLServer.

다음 기능은 날짜와 함께 작동하는 데 사용할 수 있습니다. 유형:

pgtypesdate_from_timestamp

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

날짜 pgtypesdate_from_timestamp (timestamp dt);

함수는 유일한 인수로 타임 스탬프를 수신합니다 추출 된 날짜 부분을 이것으로부터 반환합니다 타임 스탬프.

pgtypesdate_from_asc

텍스트 표현의 날짜를 구문 분석하십시오.

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

함수는 c char* string을받습니다str그리고 C char* string에 대한 포인터endptr. 현재 ECPG 항상 완전한 문자열을 구문 분석하므로 현재 첫 번째 주소를 저장하는 것을 지원하지 않습니다. 의 잘못된 문자*endptr. 안전하게 설정할 수 있습니다endptrto 널.

함수는 항상 mdy 형식을 가정합니다 날짜와 현재 변경할 변수가 없습니다. ECPG 내에서

다음 입력 형식이 허용됩니다.

표 31-1. 유효한 입력 형식pgtypesdate_from_asc

입력 결과
1999 년 1 월 8 일 1999 년 1 월 8 일
1999-01-08 1999 년 1 월 8 일
1/8/1999 1999 년 1 월 8 일
1/18/1999 1 월 18 일, 1999
01/02/03 2 월 1 일, 2003
1999-Jan-08 1999 년 1 월 8 일
1 월 -08-1999 1999 년 1 월 8 일
08-Jan-1999 1999 년 1 월 8 일
99-Jan-08 1999 년 1 월 8 일
08-Jan-99 1999 년 1 월 8 일
08-Jan-06 2006 년 1 월 8 일
1 월 -08-99 1999 년 1 월 8 일
19990108 ISO 8601; 1 월 8 일, 1999
990108 ISO 8601; 1 월 8 일, 1999
1999.008 연도와 날 년도
J2451187 Julian Day
99 년 1 월 8 일 기원전 99 년 공동 연대
pgtypesdate_to_asc

날짜의 텍스트 표현을 반환합니다 변하기 쉬운.

char *pgtypesdate_to_asc (날짜 ddate);

함수는 날짜를 수신합니다ddate유일한 매개 변수로서. 그것은 할 것입니다 양식의 날짜를 출력1999-01-18, 즉yyyy-mm-dd형식.

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, date *jdate);

함수는 3 정수의 배열을 수신합니다 (29899_29904) 첫 번째 인수로서 두 번째 인수로서 유형의 변수에 대한 포인터 작업 결과를 유지 해야하는 날짜.

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 (날짜 ddate, char *fmtstring, char *outbuf);

함수는 변환 날짜를 수신합니다 (ddate), 형식 마스크 (fmtstring) 및 고정 될 문자열 날짜의 텍스트 표현 (outbuf).

성공시, 0이 반환되고 음수 값이 오류가 발생했습니다.

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

  • DD- 그 수 월의 날.

  • mm- 그 수 한 달.

  • yy- 그 수 두 자리 토토 캔로 연도.

  • yyyy- 그 수 4 자리 토토 캔로서의 해.

  • DDD- 오늘의 이름 (약식).

  • mmm- 이름의 이름 월 (약식).

다른 모든 문자는 출력에 1 : 1을 복사합니다 끈.

다음 표는 몇 가지 가능한 형식을 나타냅니다. 이 기능을 사용하는 방법에 대한 아이디어가 제공됩니다. 모든 출력 라인은 같은 날짜를 기준으로합니다 : 11 월, 1959 년 23 일

표 31-2. 유효한 입력 형식pgtypesdate_fmt_asc

FMT 결과
mmddyy 112359
ddmmyy 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.
MMM. DD, yyyy 11 월. 23, 1959
mmm dd yyyy 11 월 23 일 1959
yyyy dd mm 1959 23 11
ddd, mmm. DD, yyyy 월, 11 월 23 일, 1959
(ddd) mmm. DD, yyyy (월) 11 월 23 일, 1959
pgtypesdate_defmt_asc

형식 마스크를 사용하여 c char* 문자열을 유형 날짜의 가치.

int pgtypesdate_defmt_asc (날짜 *d, char *fmt, char *str);

함수는 날짜 값에 대한 포인터를 수신합니다. 작동 결과를 유지해야합니다 (d), 파싱에 사용할 형식 마스크 날짜 (FMT) 및 C char* 날짜의 텍스트 표현을 포함하는 문자열 (str). 텍스트 표현은 형식 마스크와 일치 할 것으로 예상됩니다. 그러나 당신은 1 : 1의 매핑을 가질 필요가 없습니다. 형식 마스크에 문자열. 함수는 만 분석합니다 순차적 순서와 리터럴 찾기yy또는yyyy올해의 위치를 ​​표시mm그리고DD위치를 표시합니다 오늘의.

다음 표는 몇 가지 가능한 형식을 나타냅니다. 이것은 당신에게 이것을 사용하는 방법에 대한 아이디어를 줄 것입니다 기능.

표 31-3. 유효한 입력 형식rdefmtdate

FMT str 결과
ddmmyy 21-2-54 1954-02-21
ddmmyy 2-12-54 1954-12-02
ddmmyy 20111954 1954-11-20
ddmmyy 130464 1964-04-13
mmm.dd.yyyy 3 월 -1967 1967-03-12
YY/MM/DD 1954, 2 월 세 번째 1954-02-03
mmm.dd.yyyy 041269 1969-04-12
yy/mm/dd 2525 년에 7 월 달, 인류는 28 일에 살아있을 것입니다. 낮 2525-07-28
DD-MM-YY 나는 28 일에 말했다 2525 년 7 월 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

31.8.3. 그만큼 타임 스탬프 유형

C의 타임 스탬프 유형을 통해 프로그램을 처리 할 수 ​​있습니다. SQL 유형 타임 스탬프의 데이터. 보다섹션 8.5등가 입력PostgreSQLServer.

다음 기능은 타임 스탬프 유형 :

pgtypestimestamp_from_asc

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

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

함수는 문자열을 구문 분석합니다 (str) 및 C char에 대한 포인터* (endptr). 현재 ECPG 항상 완전한 문자열을 구문 분석하므로 현재 첫 번째 주소를 저장하는 것을 지원하지 않습니다. 의 잘못된 문자*endptr. 안전하게 설정할 수 있습니다endptrto 널.

함수는 성공시 구문 분석 타임 스탬프를 반환합니다. 오류로PGTYPESINVALIDTIMESTAMP반환 및 Errno는로 설정되었습니다.PGTYPES_TS_BAD_TIMESTAMP. 보다pgtypesinvalidtimestamp중요합니다 이 값에 대한 메모.

일반적으로 입력 문자열에는 포함 할 수 있습니다 허용 날짜 사양의 조합, a 공백 문자 및 허용 시간 사양. ECPG는 Timezones를 지원하지 않습니다. 할 수 있습니다 그것들을 구문 분석하지만 계산은로 적용하지 않습니다.PostgreSQL서버 예를 들어. TimeZone 지정자가 조용합니다 폐기.

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

표 31-4. 유효한 입력 형식pgtypestimestamp_from_asc

입력 결과
1999-01-08 04:05:06 1999-01-08 04:05:06
1 월 8 일 04:05:06 1999 PST 1999-01-08 04:05:06
1999-Jan-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* 문자열로 변환합니다.

char *pgtypestimestamp_to_asc (timestamp tstamp);

함수는 타임 스탬프를받습니다tstamp유일한 주장으로서 반환합니다 텍스트 표현이 포함 된 할당 된 문자열 타임 스탬프의

pgtypestimestamp_current

현재 타임 스탬프 검색.

void pgtypestimestamp_current (timestamp *ts);

함수는 현재 타임 스탬프를 검색하고 저장합니다 TimeStamp 변수로TS

pgtypestimestamp_fmt_asc

타임 스탬프 변수를 C char*로 변환* 형식 마스크.

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

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

성공시 함수는 0과 음수를 반환합니다 오류가 발생한 경우 가치.

다음 형식 지정자를 사용할 수 있습니다 형식 마스크. 형식 지정자는 동일한 형식 지정자입니다 에서 사용됩니다.Strftime함수 inLIBC. 어느 형식이 아닌 지정자가 출력에 복사됩니다 완충기.

  • %a-로 대체됩니다 주중 이름의 국가 표현.

  • %a-로 대체됩니다 주중 약식의 국가적 대표 이름.

  • %B-로 대체됩니다 한 달 이름의 국가적 대표.

  • %B-로 대체됩니다 약식 달의 국가적 대표 이름.

  • %C- (Year / 100) 십진수로서; 단일 자릿수가 앞서 있습니다 0으로.

  • %C-로 대체됩니다 시간과 날짜의 국가적 표현.

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

  • %d-로 대체됩니다 소수점 수 (01-31)로서의 달의 날.

  • %e* %o*-POSIX 로케일 확장. 그만큼 시퀀스%EC %EC %ex %ex %ey %ey %OD %OE %OH %OI %OM %OM %OS %ou %ou %ov %ow %ow %Oy제공해야합니다 대체 표현.

    추가%OB대체 달 이름을 나타내도록 구현되었습니다 (일일 언급없이 독립형 사용).

  • %e-로 대체됩니다 소수점 수 (1-31)로서의 월간; 하나의 토토 캔는 공백이 앞서 있습니다.

  • %f-와 동일합니다%y-%m-%d.

  • %g-- a로 대체됩니다 세기와의 소수점으로. 올해는입니다 금주의 큰 부분을 포함하는 것 (월요일은 주 1 주일로).

  • %g-로 대체됩니다 와 같은 해%g그러나 a 세기가없는 10 진수 (00-99).

  • %H-로 대체됩니다 시간 (24 시간 시계)으로 소수점 숫자 (00-23).

  • %H- 동일%B.

  • %I-로 대체됩니다 소수점 숫자 (01-12)로 시간 (12 시간 클럭).

  • %j-로 대체됩니다 소수점 토토 캔 (001-366)로 올해의 날.

  • %K-로 대체됩니다 10 진수 (0-23)로서 시간 (24 시간 클럭); 단일 자릿수는 공백이 앞서 있습니다.

  • %l-로 대체됩니다 십진수 (1-12)로서 시간 (12 시간 클럭); 단일 자릿수는 공백이 앞서 있습니다.

  • %m-로 대체됩니다 10 진수로 분수 (00-59).

  • %m-로 대체됩니다 소수점 수 (01-12).

  • %n-- a로 대체됩니다 Newline.

  • %o*- 동일%e*.

  • %P-로 대체됩니다 "ANTE MERIDIEM"의 국가적 대표 또는 "Post Meridiem"은 적절합니다.

  • %r-와 동일합니다%H :%m.

  • %r-와 동일합니다%i :%m :%s%p.

  • %s-로 대체됩니다 두 번째는 십진수로 (00-60).

  • %s-로 대체됩니다 Epoch 이후 몇 초, utc.

  • %t-와 동일합니다%H :%m :%s

  • %t-- a로 대체됩니다 꼬리표.

  • %U-로 대체됩니다 일주일 수 (일요일 첫날 일요일 일주일) 소수점 숫자 (00-53).

  • %U-로 대체됩니다 주중 (월요일은 주 1 주일) 10 진수 (1-7).

  • %V-로 대체됩니다 연중 주 수 (월요일 첫날 일주일) 소수점 수 (01-53). 일주일이라면 1 월 1 일에 포함 된 새로운 날에는 4 일 이상이 있습니다. 해, 그것은 1 주차입니다. 그렇지 않으면 마지막입니다 전년도, 다음 주에는 주가 1.

  • %V-와 같습니다%e-%b-%y.

  • %W-로 대체됩니다 연중 주 수 (월요일 첫날 일주일) 소수점 숫자 (00-53).

  • %W-로 대체됩니다 주중 (일요일 일요일) 10 진수 (0-6).

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

  • %X-로 대체됩니다 날짜의 국가적 대표.

  • %y-로 대체됩니다 10 세기로 세기를 가진 해.

  • %y-로 대체됩니다 10 진수로 세기가없는 해 (00-99).

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

  • %z-로 대체됩니다 UTC의 시간대 오프셋; 선행 플러스 표지판이 있습니다 UTC의 동쪽, UTC 서쪽의 마이너스 표시, 시간 그리고 분은 각각 두 자리 숫자로 따라갑니다 그들 사이의 구분자 (RFC 822 날짜의 일반적인 형태 헤더).

  • %+-로 대체됩니다 날짜와 시간의 국가적 대표.

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

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

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

  • %%-로 대체%.

pgtypestimestamp_sub

다른 하나에서 하나의 타임 스탬프를 빼고 저장하십시오 유형 간격의 변수를 초래합니다.

int pgtypestimestamp_sub (timestamp *ts1, timestamp *ts2, interval *iv);

함수는 타임 스탬프 변수를 빼게됩니다.TS2타임 스탬프에서 포인트 변수TS1결과를 간격 변수에 저장합니다.IV

성공시 함수는 0과 음수를 반환합니다 오류가 발생한 경우 가치.

pgtypestimestamp_defmt_asc

텍스트에서 타임 스탬프 값을 구문 분석하십시오 서식 마스크를 사용한 표현

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

함수는 a의 텍스트 표현을받습니다 변수의 타임 스탬프strAS 변수에서 사용할 수있는 서식 마스크FMT. 결과가 저장됩니다 변수에서d포인트 에게.

서식 마스크 인 경우FMTis NULL, 함수는 기본값으로 떨어집니다 포맷 마스크%y-%m-%d %H :%m :%s.

이것은 반대 기능입니다PGTYPESTIMESTAMP_FMT_ASC. 참조 문서를 찾기 위해 문서 가능한 서식 마스크 항목.

pgtypestimestamp_add_interval

타임 스탬프 변수에 간격 변수 추가.

int pgtypestimestamp_add_interval (timestamp *tin, interval *span, timestamp *tout);

함수는 타임 스탬프에 대한 포인터를 수신합니다 변하기 쉬운TIN및 포인터 간격 변수SPAN. 추가합니다 타임 스탬프 간격으로 결과를 저장합니다 변수의 타임 스탬프tout

성공시 함수는 0과 음수를 반환합니다 오류가 발생한 경우 가치.

pgtypestimestamp_sub_interval

타임 스탬프에서 간격 변수를 빼십시오 변하기 쉬운.

int pgtypestimestamp_sub_interval (timestamp *tin, interval *span, timestamp *tout);

함수는 간격 변수를 빼냅니다.SPAN타임 스탬프 변수TIN결과를 변수로 가리키고 저장합니다.tout

성공시 함수는 0과 음수를 반환합니다 오류가 발생한 경우 가치.

31.8.4. 그만큼 간격 유형

C의 간격 유형을 사용하면 프로그램이 다루어 질 수 있습니다. SQL 유형 간격의 데이터. 보다섹션 8.5등가 입력PostgreSQLServer.

다음 함수는 간격 유형 :

pgtypesinterval_new

새로 할당 된 간격으로 포인터를 반환합니다 변하기 쉬운.

간격 *pgtypesinterval_new (void);
pgtypesinterval_free

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

void pgtypesinterval_new (Interval *intvl);
pgtypesinterval_from_asc

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

interval *pgtypesinterval_from_asc (char *str, char ** endptr);

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

pgtypesinterval_to_asc

유형 간격 변수를 텍스트로 변환합니다 대표.

char *pgtypesinterval_to_asc (Interval *span);

함수는 간격 변수를 변환합니다.SPANc char*를 가리 킵니다. 출력은이 예처럼 보입니다.@ 1 일 12 시간 59 분 10 초.

pgtypesinterval_copy

유형 간격의 변수 복사.

int pgtypesinterval_copy (interval *intvlsrc, interval *intvldest);

함수는 간격 변수를 복사합니다.intvlsrc변수intvldest포인트 에게. 메모리를 할당해야합니다. 이전 대상 변수.

31.8.5. 그만큼 십진 유형

소수점 유형은 숫자 유형과 유사합니다. 그러나 그것은 30 개의 유의 한 숫자의 최대 정밀도로 제한됩니다. ~ 안에 힙에 생성 될 수있는 숫자 유형과 대조 만, 소수점 유형은 스택에서 또는 힙 (함수를 통해 pgtypesdecimal_new () 및 pgtypesdecimal_free (). 다른 많은 기능이 있습니다 의 소수점 유형을 다루십시오.Informix호환성 모드에 설명와이즈 토토 PostgreSQL : 문서 : 8.2 : Informix 호환 모드.

다음 함수는 소수점과 함께 작동하는 데 사용할 수 있습니다. 유형은에만 포함되어 있지 않습니다libcompat도서관.

pgtypesdecimal_new

새로 할당 된 소수점에 대한 포인터를 요청하십시오 변하기 쉬운.

DECIMAL *PGTYPESDECIMAL_NEW (void);
pgtypesdecimal_free

소수점 유형을 자유롭게하고 모든 메모리를 해제하십시오.

void pgtypesdecimal_free (Decimal *var);

31.8.6. pgtypeslib의 errno 값

pgtypes_num_bad_numeric

인수는 숫자 변수를 포함해야합니다 (또는 숫자 변수를 가리키지만 실제로는 메모리 내에서 표현은 유효하지 않았습니다.

pgtypes_num_overflow

오버플로가 발생했습니다. 숫자 유형이 처리 될 수 있기 때문입니다 거의 임의의 정밀도로 숫자를 변환합니다 다른 유형의 변수는 오버플로를 유발할 수 있습니다.

pgtypes_num_overflow

언더 플로우가 발생했습니다. 숫자 유형이 처리 될 수 있기 때문입니다 거의 임의의 정밀도로 숫자를 변환합니다 다른 유형으로 변수가 변동을 일으킬 수 있습니다.

pgtypes_num_divide_zero

제로의 부서가 시도되었습니다.

pgtypes_date_bad_date
pgtypes_date_err_eargs
PGTYPES_DATE_ERR_ENOSHORTDATE
pgtypes_intvl_bad_interval
PGTYPES_DATE_ERR_ENOTDMY
pgtypes_date_bad_day
pgtypes_date_bad_month
PGTYPES_TS_BAD_TIMESTAMP

31.8.7. pgtypeslib의 특수 상수

PGTYPESINVALIDTIMESTAMP

잘못된 시간을 나타내는 타임 스탬프 유형의 값 우표. 이것은 함수에 의해 반환됩니다pgtypestimestamp_from_asc구문 분석 오류. 내부 표현으로 인해 타임 스탬프 데이터 유형,PGTYPESINVALIDTIMESTAMP도 유효합니다 동시에 타임 스탬프. 로 설정되었습니다.1899-12-31 23:59:59. 감지하기 위해 오류, 응용 프로그램이있을뿐 아니라 테스트pgtypesinvalidtimestamp그러나errno! = 0각 전화pgtypestimestamp_from_asc.