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

33.6. PGTYPES 라이브러리

PGTYPES 라이브러리지도PostgreSQL데이터베이스 유형에 C 등가 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);

33.6.1. 젠 토토 유형

젠 토토 유형은 임의의 계산을 수행하도록 제안합니다 정도. 보다PostgreSQL : 문서 : 9.1 : 토토 핫 유형동등한 유형의 경우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반올림이있는 십진수 필요한 경우 적용.

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)

함수는 숫자 값을에서 변환합니다 변수NV이중 변수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

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

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로 구현되므로 젠 토토 유형의 제한된 버전은 오버플로가 할 수 없습니다 이 전환으로 발생합니다.

33.6.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 내에서

테이블 33-2허용 된 입력 형식을 보여줍니다.

표 33-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 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 정수의 배열을 수신합니다 (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 (날짜 ddate, char *fmtstring, char *outbuf);

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

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

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

  • DD- 그 수 월의 날.

  • mm- 그 수 한 달.

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

  • yyyy- 4 자리 젠 토토로서의 해.

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

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

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

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

표 33-3. 유효한 입력 형식pgtypesdate_fmt_asc

형식 결과
mmddyy 112359
ddmmyy 231159
yymmdd 591123
34999_35009 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 (date *d, char *fmt, char *str);

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

테이블 33-4몇 가지 가능한 형식을 나타냅니다. 이것은 줄 것입니다 이 기능을 사용하는 방법에 대한 아이디어.

표 33-4. 유효한 입력 형식rdefmtdate

형식 String 결과
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

33.6.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 지정자가 조용합니다 폐기.

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

표 33-5. 유효한 입력 형식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함수LIBC. 어느 형식이 아닌 지정자가 출력에 복사됩니다 완충기.

  • %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과 음수를 반환합니다 오류가 발생한 경우 가치.

33.6.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포인트 에게. 메모리를 할당해야합니다. 이전 대상 변수.

33.6.5. 소수점

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

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

pgtypesdecimal_new

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

Decimal *pgtypesdecimal_new (void);
pgtypesdecimal_free

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

void pgtypesdecimal_free (Decimal *var);

33.6.6. 의 erno 값 pgtypeslib

pgtypes_num_bad_numeric

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

pgtypes_num_overflow

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

pgtypes_num_underflow

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

pgtypes_num_divide_zero

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

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

무한 타임 스탬프 값이 a 처리 할 수없는 맥락.

33.6.7. 특수 상수 pgtypeslib

pgtypesinvalidtimestamp

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