PGTYPES 라이브러리지도PostgreSQLC 프로그램에서 사용할 수있는 데이터베이스 유형. 또한 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); pgtypeschar_free (out);
와 같은 일부 기능pgtypesnumeric_to_asc
새로 할당 된 문자열에 포인터를 반환합니다. 이 결과는로 해제되어야합니다.pgtypeschar_free
대신무료
. (이것은 메모리 할당과 릴리스가 때때로 같은 라이브러리에서 수행 해야하는 Windows에서만 중요합니다.)
숫자 유형은 임의의 정밀도로 계산을 수행하는 것을 제공합니다. 보다스포츠 토토 결과 42_007동등한 유형의 경우postgresql서버. 임의의 정밀성으로 인해이 변수는 동적으로 확장하고 축소 할 수 있어야합니다. 그렇기 때문에 당신은 힙에 숫자 변수 만 만들 수 있습니다.pgtypesnumeric_new
andpgtypesnumeric_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
. 안전하게 설정할 수 있습니다endptr
to null.
pgtypesnumeric_to_asc
#|Malloc
숫자 유형의 문자열 표현을 포함하는Num
.
char *pgtypesnumeric_to_asc (numeric *num, int dscale);
숫자 값은로 인쇄됩니다.dscale
필요한 경우 반올림이 적용되는 소수 숫자. 결과는로 해제되어야합니다.pgtypeschar_free ()
.
pgtypesnumeric_add
#세 번째 변수에 두 개의 숫자 젠 토토 추가합니다.
int pgtypesnumeric_add (숫자 *var1, 숫자 *var2, 숫자 *결과);
함수가 젠 토토 추가합니다var1
andvar2
결과 변수로의결과
. 함수는 성공시 0을, 오류의 경우 -1을 반환합니다.
pgtypesnumeric_sub
#두 개의 숫자 변수를 빼고 결과를 세 번째 변수로 반환합니다.
int pgtypesnumeric_sub (숫자 *var1, 숫자 *var2, 숫자 *결과);
함수가 젠 토토 빼냅니다var2
변수에서var1
. 작업 결과는 변수에 저장됩니다결과
. 함수는 성공시 0을, 오류의 경우 -1을 반환합니다.
pgtypesnumeric_mul
#두 개의 숫자 변수를 곱하고 결과를 세 번째 변수로 반환합니다.
int pgtypesnumeric_mul (숫자 *var1, 숫자 *var2, 숫자 *결과);
함수는 젠 토토 곱합니다var1
andvar2
. 작업 결과는 변수에 저장됩니다결과
. 함수는 성공시 0을, 오류의 경우 -1을 반환합니다.
pgtypesnumeric_div
#두 개의 숫자 변수를 나누고 결과를 세 번째 변수로 반환합니다.
int pgtypesnumeric_div (숫자 *var1, 숫자 *var2, 숫자 *결과);
함수는 젠 토토 나눕니다var1
byvar2
. 작업 결과는 변수에 저장됩니다결과
. 함수는 성공시 0을, 오류의 경우 -1을 반환합니다.
pgtypesnumeric_cmp
#두 개의 숫자 변수 비교.
int pgtypesnumeric_cmp (숫자 *var1, 숫자 *var2)
이 함수는 두 가지 숫자 젠 토토 비교합니다. 오류의 경우int_max
반환됩니다. 성공시 함수는 세 가지 가능한 결과 중 하나를 반환합니다.
1, ifvar1
보다var2
-1, ifvar1
보다 작습니다var2
0, ifvar1
andvar2
동일합니다
pgtypesnumeric_from_int
#int 젠 토토 숫자 변수로 변환합니다.
int pgtypesnumeric_from_int (서명 된 int_val, 숫자 *var);
이 함수는 유형에 서명 된 int의 젠 토토 받아들이고 숫자 변수에 저장var
. 성공시, 실패의 경우 0이 반환되고 -1이 반환됩니다.
pgtypesnumeric_from_long
#긴 int 젠 토토 숫자 변수로 변환합니다.
int pgtypesnumeric_from_long (서명 long_val, 숫자 *var);
이 함수는 Long 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을 반환하고 오류가 발생하면 오류가 발생합니다. 오버플로에서 글로벌 변수errno
로 설정됩니다pgtypes_num_overflow
and Underflowerrno
로 설정됩니다pgtypes_num_underflow
.
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을 반환합니다. 소수 유형은 숫자 유형의 한정판으로 구현 되므로이 변환으로 오버플로가 발생할 수 없습니다.
C의 날짜 유형을 사용하면 프로그램이 SQL 유형 날짜의 데이터를 처리 할 수 있습니다. 보다PostgreSQL : 문서 : 17 : 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
. 안전하게 설정할 수 있습니다endptr
to null.
함수는 항상 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-Jan-08 |
1999 년 1 월 8 일 |
Jan-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; 1999 년 1 월 8 일 |
990108 |
ISO 8601; 1999 년 1 월 8 일 |
1999.008 |
연도 및 연도 |
J2451187 |
Julian Day |
BC 99 년 1 월 8 일 |
일반 시대 전 99 학년 |
pgtypesdate_to_asc
#날짜 변수의 텍스트 표현을 반환합니다.
char *pgtypesdate_to_asc (날짜 ddate);
함수는 날짜를받습니다ddate
유일한 매개 변수로. 양식의 날짜를 출력합니다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, 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을 복사합니다.
표 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. |
MMM. DD, yyyy |
11 월. 23, 1959 |
mmm dd yyyy |
1959 년 11 월 23 일 |
yyyy dd mm |
1959 23 11 |
ddd, mmm. DD, yyyy |
Mon, 1959 년 11 월 23 일 |
(ddd) mmm. DD, yyyy |
(월) 1959 년 11 월 23 일 |
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
오늘의 위치를 표시합니다.
표 34.4몇 가지 가능한 형식을 나타냅니다. 이 기능을 사용하는 방법에 대한 아이디어를 제공합니다.
표 34.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 월 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. 날짜/사설 토토 유형동등한 유형의 경우PostgreSQLServer.
다음 함수는 타임 스탬프 유형으로 작동하는 데 사용할 수 있습니다.
pgtypestimestamp_from_asc
#텍스트 표현에서 타임 스탬프 변수로 타임 스탬프를 구문 분석합니다.
타임 스탬프 pgtypestimestamp_from_asc (char *str, char ** endptr);
함수는 문자열을 구문 분석합니다 (str
) 및 C char* (에 대한 포인터endptr
). 현재 ECPG는 항상 완전한 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것이 지원되지 않습니다.*endptr
. 안전하게 설정할 수 있습니다endptr
to null.
함수는 성공시 구문 분석 타임 스탬프를 반환합니다. 오류로PGTYPESINVALIDTIMESTAMP
반환 및errno
로 설정되었습니다PGTYPES_TS_BAD_TIMESTAMP
. 보다PGTYPESINVALIDTIMESTAMP
이 값에 대한 중요한 메모는
일반적으로 입력 문자열에는 허용 된 날짜 사양, 공백 문자 및 허용 시간 사양의 조합이 포함될 수 있습니다. 시간대는 ECPG에 의해 지원되지 않습니다. 그것들을 구문 분석 할 수 있지만 계산은로 적용하지 않습니다.PostgreSQL예를 들어 서버가 있습니다. TimeZone 지정자는 조용히 폐기됩니다.
표 34.5입력 문자열에 대한 몇 가지 예제가 포함되어 있습니다.
표 34.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
유일한 인수로서 타임 스탬프의 텍스트 표현을 포함하는 할당 된 문자열을 반환합니다. 결과는로 해제되어야합니다.pgtypeschar_free ()
.
pgtypestimestamp_current
#현재 타임 스탬프 검색.
void pgtypestimestamp_current (timestamp *ts);
함수는 현재 타임 스탬프를 검색하고이를 타임 스탬프 변수에 저장합니다.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
- 주중 이름의 국가 표현으로 대체됩니다.
53999_54003
- 약식 평일 이름의 국가적 표현으로 대체됩니다.
%B
- 전국 이름의 국가 표현으로 대체됩니다.
%B
- 약식 월 이름의 국가적 표현으로 대체됩니다.
%C
-- 소수점 숫자로 대체됩니다. 단일 자릿수는 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
-는 1 년으로 1 년으로 십진수로 대체됩니다. 올해는 금주의 큰 부분을 포함하는 것입니다 (월요일 월요일).
%g
-와 같은 해로 대체 됨%g
, 그러나 Century가없는 소수점 숫자 (00-99).
%H
- 시간 (24 시간 시계)으로 십진수 (00–23)로 대체됩니다.
%H
- 동일%B
.
%I
- 시간 (12 시간 시계)으로 십진수 (01–12)로 대체됩니다.
%j
- 올해의 날로 십진수 (001–366)로 대체됩니다.
%K
- 시간 (24 시간 시계)으로 십진수 (0-23)로 대체됩니다. 단일 자릿수는 공백이 앞서 있습니다.
%l
- 시간 (12 시간 시계)으로 십진수 (1-12)로 대체됩니다. 단일 자릿수는 공백이 앞서 있습니다.
%m
- 분량으로 십진수 (00–59)로 대체됩니다.
%m
- 이달으로 십진수 (01–12)로 대체됩니다.
%n
- Newline으로 대체됩니다.
%o*
- 동일%e*
.
%P
-- 국가 표현으로 대체“ante meridiem”또는“Post Meridiem”적절한.
%r
-와 같습니다%H :%m
.
%r
-와 같습니다%i :%m :%s%p
.
%s
- 두 번째로 소수점 번호 (00–60)로 대체됩니다.
%s
- 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의 시간대 오프셋으로 대체됩니다. Leading Plus Sign은 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);
함수는 변수에서 타임 스탬프의 텍스트 표현을받습니다str
및 변수에서 사용할 형식 마스크FMT
. 결과는 변수에 저장됩니다.d
서식 마스크 인 경우FMT
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
. TimeStamp에 간격을 추가하고 결과 타임 스탬프가 변수에 저장됩니다.tout
포인트로.
성공시, 오류가 발생하면 함수가 0과 음수 값을 반환합니다.
pgtypestimestamp_sub_interval
#타임 스탬프 변수에서 간격 변수를 빼십시오.
int pgtypestimestamp_sub_interval (timestamp *tin, interval *span, timestamp *tout);
함수는 간격 젠 토토 빼냅니다.SPAN
타임 스탬프 젠 토토 가리키는TIN
결과를 가리키고 결과를 변수로 저장하고 저장tout
포인트로.
성공시, 오류가 발생하면 함수가 0과 음수 값을 반환합니다.
C의 간격 유형을 사용하면 프로그램이 SQL 유형 간격의 데이터를 처리 할 수 있습니다. 보다PostgreSQL : 문서 : 17 : 8.5. 날짜/사설 토토 유형동등한 유형의 경우PostgreSQLServer.
다음 함수는 간격 유형과 함께 작동하는 데 사용할 수 있습니다.
pgtypesinterval_new
#새로 할당 된 간격 변수에 대한 포인터를 반환합니다.
간격 *pgtypesinterval_new (void);
pgtypesinterval_free
#이전에 할당 된 간격 변수의 메모리 해제.
void pgtypesinterval_free (Interval *intvl);
pgtypesinterval_from_asc
#텍스트 표현의 간격을 구문 분석합니다.
interval *pgtypesinterval_from_asc (char *str, char ** endptr);
함수는 입력 문자열을 구문 분석합니다str
그리고 할당 된 간격 변수에 대한 포인터를 반환합니다. 현재 ECPG는 항상 완전한 문자열을 구문 분석하므로 현재 첫 번째 유효하지 않은 문자의 주소를 저장하는 것이 지원되지 않습니다.*endptr
. 안전하게 설정할 수 있습니다endptr
to null.
pgtypesinterval_to_asc
#유형 간격 젠 토토 텍스트 표현으로 변환합니다.
char *pgtypesinterval_to_asc (Interval *span);
함수는 간격 젠 토토 변환합니다.SPAN
C char*를 가리 킵니다. 출력은이 예처럼 보입니다.@ 1 일 12 시간 59 분 10 초
. 결과는로 해제되어야합니다.pgtypeschar_free ()
.
pgtypesinterval_copy
#유형 간격의 변수 복사.
int pgtypesinterval_copy (interval *intvlsrc, interval *intvldest);
함수는 간격 젠 토토 복사합니다.intvlsrc
젠 토토 가리키는intvldest
이전에 대상 변수에 대한 메모리를 할당해야합니다.
소수점 유형은 숫자 유형과 유사합니다. 그러나 최대 30 자리의 최대 정밀도로 제한됩니다. 힙에서만 생성 할 수있는 숫자 유형과 달리 소수 유형은 스택 또는 힙에 (함수를 통해에 생성 될 수 있습니다.pgtypesdecimal_new
andpgtypesdecimal_free
). 의 소수점 유형을 다루는 다른 기능이 많이 있습니다.Informix호환성 모드에 설명토토 베이 PostgreSQL : 문서 : 17 : 34.15. Informix 호환성 모드.
다음 함수는 소수점 유형으로 작동하는 데 사용할 수 있으며에만 포함되어 있지 않습니다.libcompat
도서관.
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
#그것을 처리 할 수없는 맥락에서 무한 타임 스탬프 값이 발생했습니다.
PGTYPESINVALIDTIMESTAMP
#잘못된 타임 스탬프를 나타내는 타임 스탬프 유형의 값. 이것은 함수에 의해 반환됩니다pgtypestimestamp_from_asc
구문 분석 오류. 의 내부 표현으로 인해타임 스탬프
데이터 유형,PGTYPESINVALIDTIMESTAMP
동시에 유효한 타임 스탬프이기도합니다. 로 설정되었습니다.1899-12-31 23:59:59
. 오류를 감지하려면 응용 프로그램이 테스트 할뿐만 아니라PGTYPESINVALIDTIMESTAMP
하지만errno! = 0
각 호출 후pgtypestimestamp_from_asc
.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면