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(아웃);
다음과 같은 일부 기능PGTYPESnumeric_to_asc새로 할당된 문자열에 대한 포인터를 반환합니다. 이 결과는 다음을 사용하여 해제되어야 합니다.PGTYPESchar_free대신무료. (이는 때때로 동일한 라이브러리에서 메모리 할당 및 해제를 수행해야 하는 Windows에서만 중요합니다.)
숫자 유형은 임의의 정밀도로 계산을 수행하는 기능을 제공합니다. 참조스포츠 토토 결과 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, 숫자 *결과);
함수는 젠 토토 곱합니다var1그리고var2. 작업 결과는 변수에 저장됩니다.결과. 이 함수는 성공하면 0을 반환하고 오류가 발생하면 -1을 반환합니다.
PGTYPESnumeric_div #두 개의 숫자 변수를 나누고 결과를 세 번째 변수로 반환합니다.
int PGTYPESnumeric_div(숫자 *var1, 숫자 *var2, 숫자 *결과);
함수는 젠 토토 나눕니다.var1작성자:var2. 작업 결과는 변수에 저장됩니다.결과. 이 함수는 성공하면 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및 언더플로우에서errno다음으로 설정됩니다PGTYPES_NUM_UNDERFLOW.
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을 반환합니다. 십진수 유형은 숫자 유형의 제한된 버전으로 구현되므로 이 변환에서는 오버플로가 발생할 수 없습니다.
C의 날짜 유형을 사용하면 프로그램에서 SQL 유형 날짜의 데이터를 처리할 수 있습니다. 참조PostgreSQL : 문서 : 17 : 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 내에서 이를 변경할 수 있는 변수가 없다는 점에 유의하세요.
표 34.2허용되는 입력 형식을 보여줍니다.
표 34.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로 복사됩니다.
표 34.3몇 가지 가능한 형식을 나타냅니다. 그러면 이 기능을 사용하는 방법에 대한 아이디어를 얻을 수 있습니다. 모든 출력 라인은 동일한 날짜인 1959년 11월 23일을 기준으로 합니다.
표 34.3. 유효한 입력 형식PGTYPESdate_fmt_asc
| 형식 | 결과 |
|---|---|
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. |
음. 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오늘의 위치를 나타냅니다.
표 34.4몇 가지 가능한 형식을 나타냅니다. 이 기능을 사용하는 방법에 대한 아이디어를 얻을 수 있습니다.
표 34.4. 유효한 입력 형식rdefmtdate
| 형식 | 문자열 | 결과 |
|---|---|---|
ddmmy |
21-2-54 |
1954-02-21 |
ddmmy |
2-12-54 |
1954-12-02 |
ddmmy |
20111954 |
1954-11-20 |
ddmmy |
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 |
C의 타임스탬프 유형을 사용하면 프로그램이 SQL 유형 타임스탬프의 데이터를 처리할 수 있습니다. 참조PostgreSQL : 문서 : 17 : 8.5. 날짜/사설 토토 유형에 해당하는 유형에 대한PostgreSQL서버.
다음 함수는 타임스탬프 유형 작업에 사용할 수 있습니다:
PGTYPEStimestamp_from_asc #텍스트 표현에서 타임스탬프 변수로 타임스탬프를 분석합니다.
타임스탬프 PGTYPEStimestamp_from_asc(char *str, char **endptr);
함수는 구문 분석할 문자열을 받습니다(str) 및 C 문자에 대한 포인터*(endptr). 현재 ECPG는 항상 전체 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것을 지원하지 않습니다.*endptr. 안전하게 설정할 수 있습니다endptrNULL로.
이 함수는 성공 시 구문 분석된 타임스탬프를 반환합니다. 오류 발생 시,PGTYPESInvalidTimestamp반환되었으며errno다음으로 설정됨PGTYPES_TS_BAD_TIMESTAMP. 참조PGTYPESInvalidTimestamp이 값에 대한 중요한 참고사항입니다.
일반적으로 입력 문자열에는 허용된 날짜 지정, 공백 문자 및 허용된 시간 지정의 모든 조합이 포함될 수 있습니다. 시간대는 ECPG에서 지원되지 않습니다. 구문 분석할 수 있지만 다음과 같이 계산을 적용하지 않습니다.포스트그레SQL49195_49266
표 34.5입력 문자열에 대한 몇 가지 예가 포함되어 있습니다.
표 34.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 %EY %Od %Oe %OH %OI %옴 %OM %OS %Ou %OU %OV %아야 %OW %오이대체 표현을 제공해야 합니다.
추가로%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- 십진수(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을 반환하고 오류가 발생하면 음수 값을 반환합니다.
C의 간격 유형을 사용하면 프로그램이 SQL 유형 간격의 데이터를 처리할 수 있습니다. 참조PostgreSQL : 문서 : 17 : 8.5. 날짜/사설 토토 유형에 해당하는 유형에 대한포스트그레SQL서버.
다음 함수는 간격 유형 작업에 사용할 수 있습니다.
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을 가리킨다. 먼저 대상 변수에 대한 메모리를 할당해야 합니다.
십진수 유형은 숫자 유형과 유사합니다. 그러나 최대 정밀도는 유효 숫자 30자리로 제한됩니다. 힙에서만 생성할 수 있는 숫자 유형과 달리 10진수 유형은 스택이나 힙에서 생성할 수 있습니다(함수 사용).PGTYPESdecimal_new그리고PGTYPESdecimal_free). 에는 소수 유형을 처리하는 다른 많은 함수가 있습니다.인포믹스에 설명된 호환 모드토토 베이 PostgreSQL : 문서 : 17 : 34.15. Informix 호환성 모드.
다음 함수는 십진수 유형으로 작업하는 데 사용할 수 있으며 다음 함수에만 포함되어 있지 않습니다.libcompat도서관.
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 #처리할 수 없는 컨텍스트에서 무한 타임스탬프 값이 발견되었습니다.
PGTYPESInvalidTimestamp #잘못된 타임스탬프를 나타내는 타임스탬프 유형의 값. 이는 함수에 의해 반환됩니다.PGTYPEStimestamp_from_asc구문 분석 오류가 발생했습니다. 내부 표현으로 인해타임스탬프데이터 유형,PGTYPESInvalidTimestamp또한 동시에 유효한 타임스탬프입니다. 로 설정되어 있습니다.1899-12-31 23:59:59. 오류를 감지하려면 애플리케이션이 오류를 테스트할 뿐만 아니라PGTYPESInvalidTimestamp그러나 또한errno != 0각 호출 후PGTYPEStimestamp_from_asc.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.