| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 31. ECPG - C¾ð¾î¿¡ ÀÇÇÑ ¸ÅÀÔSQL | Fast Forward | Next |
pgtypes ¶óÀ̺귯¸®´Â PostgreSQLµ¥ÀÌÅͺ£À̽ºÀÇ ÇüŸ¦ CÇÁ·Î±×·¥À¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï C¾ð¾î¿¡ ´ëÀÀ½Ãŵ´Ï´Ù ¶Ç, ÀÌ·¯ÇÑ ÇüŸ¦ »ç¿ëÇÑ CÀÇ ±âº»ÀûÀÎ °è»êÀ» ½Ç½ÃÇÏ´Â ÇÔ¼öµµ Á¦°øÇÕ´Ï´Ù. ÀÌ °è»ê¿¡¼´Â, PostgreSQL ¼¹ö¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ÀÌÇÏÀÇ ¿¹¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
EXEC SQL BEGIN DECLARE SECTION;
date date1;
timestamp ts1, tsout;
interval iv1;
char *out;
EXEC SQL END DECLARE SECTION;
PGTYPESdate_today(&date1);
EXEC SQL SELECT started, duration INTO :ts1, :iv1 FROM datetbl WHERE d=:date1;
PGTYPEStimestamp_add_interval(&ts1, &iv1, &tsout);
out = PGTYPEStimestamp_to_asc(&tsout);
printf("Started + duration: %s\n", out);
free(out);
¼öÄ¡Çü¿¡¼´Â, ÀÓÀÇÀÇ Á¤¹Ðµµ¸¦ °¡Áø °è»ê ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
PostgreSQL¼¹ö¿¡ ´ëÀÀÇÏ´Â ÇüÅ¿¡ ´ëÇØ¼´Â Section 8.1À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
ÀÓÀÇ Á¤¹Ðµµ¸¦ °¡Áö±â ¶§¹®¿¡, ÀÌ º¯¼ö´Â µ¿ÀûÀ¸·Î È®Àå, Ãà¼ÒÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.
À̰ÍÀÌ, PGTYPESnumeric_new ³ª PGTYPESnumeric_freeÇÔ¼ö¿¡¼´Â, heap ¿µ¿ª»ó¿¡¼¸¸ º¯¼ö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Â ÀÌÀ¯ÀÔ´Ï´Ù.
ºñ½ÁÇÏÁö¸¸ Á¤¹Ðµµ°¡ ÇÑÁ¤µÈ 10Áø¼ö ÇüÅ´ heap ¿µ¿ª À̿ܿ¡ ½ºÅà ¿µ¿ª»ó¿¡¼µµ ÀÛ¼º °¡´ÉÇÕ´Ï´Ù.
ÀÌÇÏÀÇ ÇÔ¼ö´Â ¼öÄ¡ÇüÀ¸·Î ÀÛµ¿½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù.
PGTYPESnumeric_new
»õ·Ó°Ô ÇÒ´çµÈ ¼öÄ¡Çü¿¡ Æ÷ÀÎÅ͸¦ ¿äûÇÕ´Ï´Ù.
numeric *PGTYPESnumeric_new(void);
PGTYPESnumeric_free
¼öÄ¡ÇüÀ» Ç®¾îÁÖ¾î, ±× ¸Þ¸ð¸®¸¦ ¸ðµÎ ÇØ¹æÇÕ´Ï´Ù.
void PGTYPESnumeric_free(numeric *var);
PGTYPESnumeric_from_asc
¹®ÀÚ¿ Ç¥±â¿¡¼ ¼öÄ¡ÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
numeric *PGTYPESnumeric_from_asc(char *str, char **endptr);
À¯È¿ÇÑ Çü½ÄÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù. -2, .794, +3.44, 592.49E07, -32.84e-4. °ªÀÇ º¯È¯¿¡ ¼º°øÇßÀ» °æ¿ì, À¯È¿ÇÑ Æ÷ÀÎÅͰ¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. ½ÇÆÐÇßÀ» °æ¿ì´Â NULLÆ÷ÀÎÅͰ¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. ÇöÀç ecpg´Â ¹®ÀÚ¿ Àüü¸¦ ÇØ¼®Çϱ⠶§¹®¿¡, ¾ÆÁ÷ *endptrÀÇ Ã¹ ¹øÂ° ¹«È¿ ¹®ÀÚÀÇ ÁÖ¼ÒÀÇ ÀúÀåÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡ endptr¸¦ ¾ÈÀüÇÏ°Ô NULL·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù.
PGTYPESnumeric_to_asc
¼öÄ¡ÇünumÀÇ ¹®ÀÚ¿ Ç¥ÇöÀ» °¡Áö´Â, malloc·Î ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¹®ÀÚ¿¿¡ Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù.
char *PGTYPESnumeric_to_asc(numeric *num, int dscale);
¼öÄ¡´Â, Çʿ信 µû¶ó¼ »ç»ç¿ÀÀÔ µÇ¾î dscale10Áø¼ö·Î Ãâ·ÂµË´Ï´Ù.
PGTYPESnumeric_add
2°³ÀÇ ¼öÄ¡ º¯¼ö¸¦ °¡»êÇØ, 3¹øÂ° ¼öÄ¡ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
int PGTYPESnumeric_add(numeric *var1, numeric *var2, numeric *result);
ÀÌ ÇÔ¼ö´Â º¯¼ö var1¿Í º¯¼övar2¿¡ °¡»êÇØ, ±× °á°ú¸¦ result¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0À», ¿¡·¯½Ã-1À» µ¹·ÁÁÝ´Ï´Ù.
PGTYPESnumeric_sub
2°³ÀÇ ¼öÄ¡Çü º¯¼ö¸¦ °¨»êÇØ, 3¹øÂ° ¼öÄ¡Çü º¯¼ö¿¡ °á°ú¸¦ ÀúÀåÇÕ´Ï´Ù.
int PGTYPESnumeric_sub(numeric *var1, numeric *var2, numeric *result);
ÀÌ ÇÔ¼ö´Â º¯¼övar1·ÎºÎÅÍ º¯¼övar2¸¦ Á¦ÇÕ´Ï´Ù. ¿¬»ê °á°ú´Â º¯¼övar3¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0À», ¿¡·¯½Ã-1À» µ¹·ÁÁÝ´Ï´Ù.
PGTYPESnumeric_mul
2°³ÀÇ ¼öÄ¡Çü º¯¼ö¸¦ °ö¼ÀÇØ, 3¹øÂ° ¼öÄ¡Çü º¯¼ö¿¡ °á°ú¸¦ ÀúÀåÇÕ´Ï´Ù.
int PGTYPESnumeric_mul(numeric *var1, numeric *var2, numeric *result);
ÀÌ ÇÔ¼ö´Â º¯¼övar1¿Í º¯¼övar2¸¦ °öÇÕ´Ï´Ù. ¿¬»ê °á°ú´Â º¯¼övar3¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0À», ¿¡·¯½Ã-1À» µ¹·ÁÁÝ´Ï´Ù.
PGTYPESnumeric_div
2°³ÀÇ ¼öÄ¡Çü º¯¼ö·Î ³ª´°¼ÀÇØ, 3¹øÂ° ¼öÄ¡Çü º¯¼ö¿¡ °á°ú¸¦ ÀúÀåÇÕ´Ï´Ù.
int PGTYPESnumeric_div(numeric *var1, numeric *var2, numeric *result);
ÀÌ ÇÔ¼ö´Â º¯¼övar1¸¦ º¯¼övar2·Î ³ª´¯´Ï´Ù. ¿¬»ê °á°ú´Â º¯¼övar3¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0À», ¿¡·¯½Ã-1À» µ¹·ÁÁÝ´Ï´Ù.
PGTYPESnumeric_cmp
2°³ÀÇ ¼öÄ¡Çü º¯¼ö¸¦ ºñ±³ÇÕ´Ï´Ù.
int PGTYPESnumeric_cmp(numeric *var1, numeric *var2)
ÀÌ ÇÔ¼ö´Â 2°³ÀÇ ¼öÄ¡Çü º¯¼ö¸¦ ºñ±³ÇÕ´Ï´Ù. ¿¡·¯ÀÇ °æ¿ì INT_MAX°¡ µ¹¾Æ°©´Ï´Ù. ¼º°ø½Ã, ÀÌ ÇÔ¼ö´Â ÀÌÇÏÀÇ ¼¼°¡Áö Áß Çϳª¸¦ µ¹·ÁÁÝ´Ï´Ù.
var1°¡ var2º¸´Ù Å©¸é 1.
var1°¡ var2º¸´Ù ÀÛÀ¸¸é¡ª1.
var1°¡ var2¿Í µ¿ÀÏÇϸé 0.
PGTYPESnumeric_from_int
intÇü º¯¼ö¸¦ ¼öÄ¡ÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_from_int(signed int int_val, numeric *var);
ÀÌ ÇÔ¼ö´Â ºÎÈ£ºÎ Á¤¼öÇüÀÇ º¯¼ö¸¦ ¹Þ¾Æµé¿© ¼öÄ¡Çü º¯¼övar¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0, ½ÇÆÐ½Ã -1ÀÌ µ¹¾Æ°©´Ï´Ù.
PGTYPESnumeric_from_long
long intÇü º¯¼ö¸¦ ¼öÄ¡Çü º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_from_long(signed long int long_val, numeric *var);
ÀÌ ÇÔ¼ö´Â ºÎÈ£ºÎ long intÇüÀÇ º¯¼ö¸¦ ¹Þ¾Æµé¿© ¼öÄ¡Çü º¯¼övar³»¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0, ½ÇÆÐ½Ã-1ÀÌ µ¹¾Æ°©´Ï´Ù.
PGTYPESnumeric_copy
¼öÄ¡Çü º¯¼ö¸¦ ´Ù¸¥ ¼öÄ¡Çü º¯¼ö¿¡ º¹»çÇÕ´Ï´Ù.
int PGTYPESnumeric_copy(numeric *src, numeric *dst);
ÀÌ ÇÔ¼ö´Â, src°¡ Áö½ÃÇÏ´Â º¯¼öÀÇ °ªÀ» dst°¡ Áö½ÃÇÏ´Â º¯¼ö¿¡ º¹»çÇÕ´Ï´Ù. ¼º°ø½Ã 0, ½ÇÆÐ½Ã-1ÀÌ µ¹¾Æ°©´Ï´Ù.
PGTYPESnumeric_from_double
doubleÇüÀÇ º¯¼ö¸¦ ¼öÄ¡Çü º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_from_double(double d, numeric *dst);
ÀÌ ÇÔ¼ö´Â doubleÇüÀÇ º¯¼ö¸¦ ¹Þ¾Æµé¿© º¯È¯ °á°ú¸¦ dst°¡ Áö½ÃÇÏ´Â º¯¼ö³»¿¡ ÀúÀåÇÕ´Ï´Ù. ¼º°ø½Ã 0, ½ÇÆÐ½Ã-1ÀÌ µ¹¾Æ°©´Ï´Ù.
PGTYPESnumeric_to_double
¼öÄ¡Çü º¯¼ö¸¦ doubleÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_to_double(numeric *nv, double *dp)
ÀÌ ÇÔ¼ö´Â nv°¡ Áö½ÃÇÏ´Â ¼öÄ¡Çü º¯¼öÀÇ °ªÀ» dp°¡ Áö½ÃÇÏ´Â doubleÇü º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù. ¼º°ø½Ã 0, ¿À¹öÇ÷ο츦 Æ÷ÇÔÇÑ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ -1ÀÌ µ¹¾Æ°©´Ï´Ù. ¿À¹öÇ÷ο찡 ¹ß»ýÇßÀ» °æ¿ì´Â, Ãß°¡ÀûÀ¸·Î ±¤¿ª º¯¼öerrno´Â PGTYPES_NUM_OVERFLOW·Î ¼³Á¤µË´Ï´Ù.
PGTYPESnumeric_to_int
¼öÄ¡Çü º¯¼ö¸¦ intÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_to_int(numeric *nv, int *ip);
ÀÌ ÇÔ¼ö´Â nv°¡ Áö½ÃÇÏ´Â ¼öÄ¡Çü º¯¼öÀÇ °ªÀ» ip°¡ Áö½ÃÇÏ´Â Á¤¼öÇü º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù. ¼º°ø½Ã 0, ¿À¹öÇ÷ο츦 Æ÷ÇÔÇÑ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ -1ÀÌ µ¹¾Æ°©´Ï´Ù. ¿À¹öÇ÷ο찡 ¹ß»ýÇßÀ» °æ¿ì´Â, Ãß°¡ÀûÀ¸·Î ±¤¿ª º¯¼öerrno´Â PGTYPES_NUM_OVERFLOW·Î ¼³Á¤µË´Ï´Ù.
PGTYPESnumeric_to_long
¼öÄ¡Çü º¯¼ö¸¦ longÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_to_long(numeric *nv, long *lp);
ÀÌ ÇÔ¼ö´Â nv°¡ Áö½ÃÇÏ´Â ¼öÄ¡Çü º¯¼öÀÇ °ªÀ» lp°¡ Áö½ÃÇÏ´Â long º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù. ¼º°ø½Ã 0, ¿À¹öÇ÷ο츦 Æ÷ÇÔÇÑ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ -1ÀÌ µ¹¾Æ°©´Ï´Ù. ¿À¹öÇ÷ο찡 ¹ß»ýÇßÀ» °æ¿ì´Â, Ãß°¡ÀûÀ¸·Î ±¤¿ª º¯¼öerrno´Â PGTYPES_NUM_OVERFLOW·Î ¼³Á¤µË´Ï´Ù.
PGTYPESnumeric_to_decimal
¼öÄ¡Çü º¯¼ö¸¦ 10 Áø¼öÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_to_decimal(numeric *src, decimal *dst);
ÀÌ ÇÔ¼ö´Â src°¡ Áö½ÃÇÏ´Â ¼öÄ¡Çü º¯¼öÀÇ °ªÀ» dst°¡ Áö½ÃÇÏ´Â long º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù. ¼º°ø½Ã 0, ¿À¹öÇ÷ο츦 Æ÷ÇÔÇÑ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ -1ÀÌ µ¹¾Æ°©´Ï´Ù. ¿À¹öÇ÷ο찡 ¹ß»ýÇßÀ» °æ¿ì´Â, Ãß°¡ÀûÀ¸·Î ±¤¿ª º¯¼öerrno´Â PGTYPES_NUM_OVERFLOW·Î ¼³Á¤µË´Ï´Ù.
PGTYPESnumeric_from_decimal
10 Áø¼öÇü º¯¼ö¸¦ ¼öÄ¡ÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESnumeric_from_decimal(decimal *src, numeric *dst);
ÀÌ ÇÔ¼ö´Â src°¡ Áö½ÃÇÏ´Â 10 Áø¼öÇü º¯¼öÀÇ °ªÀ» dst°¡ Áö½ÃÇÏ´Â ¼öÄ¡Çü º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù. ¼º°ø½Ã 0, ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ -1ÀÌ µ¹¾Æ°©´Ï´Ù. 10 Áø¼öÇüÀº Á¦ÇѺÎÀÇ ¼öÄ¡ÇüÀ¸·Î¼ ±¸ÇöµÇ°í Àֱ⠶§¹®¿¡, ÀÌ º¯È¯¿¡¼´Â ¿À¹öÇ÷ο찡 ÀϾÁö ¾Ê½À´Ï´Ù.
CÀÇ µ¥ÀÌÅÍÇüÀ» »ç¿ëÇØ, ÇÁ·Î±×·¥À¸·ÎºÎÅÍ SQLÇüÀÇ µ¥ÀÌÅ͸¦ Ãë±ÞÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. PostgreSQL¼¹öÀÇ µ¿ÀÏÇÑ ÇüÅ´ Section 8.5À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
µ¥ÀÌÅÍÇüÀ» Á¶ÀÛÇϱâ À§Çؼ ÀÌÇÏÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
PGTYPESdate_from_timestamp
ŸÀÓ½ºÅÛÇÁ¿¡¼ ÀÏÀÚ¸¦ ²¨³À´Ï´Ù.
date PGTYPESdate_from_timestamp(timestamp dt);
ÀÌ ÇÔ¼ö´Â À¯ÀÏÇÑ ÀÎÀڷΠŸÀÓ½ºÅÛÇÁ¸¦ ¹Þ¾ÆµéÀ̰í À̷κÎÅÍ ÀÏÀÚ ºÎºÐÀ» ²¨³À´Ï´Ù.
PGTYPESdate_from_asc
ÅØ½ºÆ® Ç¥Çö¿¡¼ ÀÏÀÚÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
date PGTYPESdate_from_asc(char *str, char **endptr);
ÀÌ ÇÔ¼ö´Â CÀÇ char*ÇüÅ ¹®ÀÚ¿ str¿Í CÀÇ char*ÇüÅ ¹®ÀÚ¿ endptr¿¡ Æ÷ÀÎÅ͸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. ÇöÀç ecpg´Â ¹®ÀÚ¿ Àüü¸¦ ÇØ¼®Çϱ⠶§¹®¿¡, ¾ÆÁ÷ *endptr¿¡ ù ¹øÂ° ¹«È¿ ¹®ÀÚÀÇ ÁÖ¼Ò¸¦ ÀúÀåÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡ endptr¸¦ ¾ÈÀüÇÏ°Ô NULL·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÇÔ¼ö°¡ Ç×»ó MDY ¼½ÄÀÇ ÀÏÀÚ¸¦ ÀüÁ¦·Î Çϰí ÀÖ´Â Á¡¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ÇöÀç ecpg¿¡´Â À̰ÍÀ» º¯°æÇϱâ À§ÇÑ º¯¼ö°¡ ¾ø½À´Ï´Ù.
ÀÌÇÏÀÇ ÀÔ·Â ¼½ÄÀÌ °¡´ÉÇÕ´Ï´Ù.
Table 31-1. Valid input formats for PGTYPESdate_from_asc
| Input | Result |
|---|---|
| January 8, 1999 | January 8, 1999 |
| 1999-01-08 | January 8, 1999 |
| 1/8/1999 | January 8, 1999 |
| 1/18/1999 | January 18, 1999 |
| 01/02/03 | February 1, 2003 |
| 1999-Jan-08 | January 8, 1999 |
| Jan-08-1999 | January 8, 1999 |
| 08-Jan-1999 | January 8, 1999 |
| 99-Jan-08 | January 8, 1999 |
| 08-Jan-99 | January 8, 1999 |
| 08-Jan-06 | January 8, 2006 |
| Jan-08-99 | January 8, 1999 |
| 19990108 | ISO 8601; January 8, 1999 |
| 990108 | ISO 8601; January 8, 1999 |
| 1999.008 | year and day of year |
| J2451187 | Julian day |
| January 8, 99 BC | year 99 before the Common Era |
PGTYPESdate_to_asc
ÀÏÀÚ º¯¼öÀÇ ÅØ½ºÆ® Ç¥ÇöÀ» µ¹·ÁÁÝ´Ï´Ù.
char *PGTYPESdate_to_asc(date dDate);
ÀÌ ÇÔ¼ö´Â À¯ÀÏÇÑ ÀÎÀڷμ ÀÏÀÚÇüdDate¸¦ Á¢¼öÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â 1999-01-18, Áï YYYY-MM-DD¼½Ä¿¡¼ ÀÏÀÚ¸¦ Ãâ·ÂÇÕ´Ï´Ù.
PGTYPESdate_julmdy
ÀÏÀÚÇüÀÇ º¯¼ö·ÎºÎÅÍ, ÀÏ, ¿ù, ³âÀÇ °ªÀ» ²¨³À´Ï´Ù.
void PGTYPESdate_julmdy(date 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(date 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);
ÀÌ ÇÔ¼ö´Â º¯È¯ ´ë»óÀÇ ÀÏÀÚ(dDate), ¼½Ä ¸¶½ºÅ©(fmtstring), ÀÏÀÚÀÇ ÅØ½ºÆ® Ç¥ÇöÀ» ÀúÀåÇϱâ À§ÇÑ ¹®ÀÚ¿(outbuf)À» ¹Þ¾ÆµéÀÔ´Ï´Ù.
¼º°ø½Ã¿¡ 0, ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì´Â ºÎÀÇ °ªÀÌ µ¹¾Æ¿É´Ï´Ù.
ÀÌÇÏÀÇ ¸®ÅÍ·²À» »ç¿ëÇØ, Çʵ带 ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
dd - ¿ù°£ ³¯Â¥.
mm - ¿¬°£ ¿ù¼ö.
yy - 2ÀÚ¸®¼ö Ç¥±âÀÇ ¿¬¼ö
yyyy - 4ÀÚ¸®¼ö Ç¥±âÀÇ ¿¬¼ö
ddd - ÀÏÀÇ À̸§(»ý·«Çü)
mmm - ¿ùÀÇ À̸§(»ý·«Çü)
´Ù¸¥ ¹®ÀÚ´Â ¸ðµÎ Ãâ·Â ¹®ÀÚ¿¿¡ ±×´ë·Î º¹»çµË´Ï´Ù.
ÀÌÇÏÀÇ Ç¥¿¡ ¸î °³ÀÇ ¼½ÄÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ÇÔ¼öÀÇ »ç¿ë¹ý¿¡ °üÇÑ °³³äÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù. Ãâ·ÂÇàÀº ¸ðµÎ 1959³â 11¿ù 23ÀÇ¿¡ ±Ù°ÅÇϰí ÀÖ½À´Ï´Ù.
Table 31-2. À¯È¿ÇÑ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 | Nov. 23, 1959 |
| mmm dd yyyy | Nov 23 1959 |
| yyyy dd mm | 1959 23 11 |
| ddd, mmm. dd, yyyy | Mon, Nov. 23, 1959 |
| (ddd) mmm. dd, yyyy | (Mon) Nov. 23, 1959 |
PGTYPESdate_defmt_asc
¼½Ä ¸¶½ºÅ©¸¦ »ç¿ëÇØ CÀÇ char* ¹®ÀÚ¿À» ÀÏÀÚÇüÀÇ °ªÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str);
ÀÌ ÇÔ¼ö´Â, ó¸® °á°ú¸¦ ÀúÀåÇϱâ À§ÇÑ ÀÏÀÚÇü¿¡ Æ÷ÀÎÅÍ(d), ÀÏÀÚ¸¦ ÇØ¼®Çϱâ À§ÇÑ ¼½Ä ¸¶½ºÅ©(fmt), ÀÏÀÚÀÇ ÅØ½ºÆ® Ç¥ÇöÀ» Æ÷ÇÔÇÑ CÀÇ char*ij¸¯ÅÍ ¶óÀÎ(str)À» ¹Þ¾ÆµéÀÔ´Ï´Ù. ÅØ½ºÆ® Ç¥ÇöÀÌ ¼½Ä ¸¶½ºÅ©¿¡ ¸Â´Â Ç¥ÇöÀÎ °ÍÀ» °¡Á¤Çϰí ÀÖ½À´Ï´Ù. ±×·¯³ª, ¹®ÀÚ¿°ú ¼½Ä ¸¶½ºÅ©¸¦ 1:1 ´ëÀÀ½Ãų ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¼øÂ÷Àû ¼ø¼·Î ÇØ¼®ÇØ, ³âÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â yy ¶Ç´Â yyyy¸¦, ¿ùÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â mm¸¦, ÀÏÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â dd¸¦ °Ë»öÇÕ´Ï´Ù.
ÀÌÇÏÀÇ Ç¥¿¡ ¼½ÄÀÇ ¿¹¸¦ ¸î °³ °¡¸®Åµ´Ï´Ù. ÀÌ ÇÔ¼öÀÇ »ç¿ë ¹æ¹ý¿¡ °üÇÑ °³³äÀ» Á¦°øÇÕ´Ï´Ù.
Table 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 | MAR-12-1967 | 1967-03-12 |
| yy/mm/dd | 1954, February 3rd | 1954-02-03 |
| mmm.dd.yyyy | 041269 | 1969-04-12 |
| yy/mm/dd | In the year 2525, in the month of July, mankind will be alive on the 28th day | 2525-07-28 |
| dd-mm-yy | I said on the 28th of July in the year 2525 | 2525-07-28 |
| mmm.dd.yyyy | 9/14/58 | 1958-09-14 |
| yy/mm/dd | 47/03/29 | 1947-03-29 |
| mmm.dd.yyyy | oct 28 1975 | 1975-10-28 |
| mmddyy | Nov 14th, 1985 | 1985-11-14 |
CÀÇ Å¸ÀÓ½ºÅÛÇÁÇüÀ» »ç¿ëÇØ ÇÁ·Î±×·¥¿¡¼ SQLÀÇ Å¸ÀÓ½ºÅÛÇÁÇü µ¥ÀÌÅ͸¦ Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. PostgreSQL¿¡ ´ëÀÀÇÏ´Â ÇüÅ¿¡ ´ëÇØ¼´Â Section 8.5À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
ÀÌÇÏÀÇ ÇÔ¼ö¸¦ »ç¿ëÇØ ŸÀÓ½ºÅÛÇÁÇüÀ» Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù.
PGTYPEStimestamp_from_asc
ÅØ½ºÆ® Ç¥ÇöÀÇ Å¸ÀÓ ½ºÅÆÇÁ¸¦ ŸÀÓ ½ºÅÆÇÁÇü º¯¼ö·Î º¯È¯ÇÕ´Ï´Ù.
timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr);
ÀÌ ÇÔ¼ö´Â º¯È¯ ´ë»óÀÇ Ä³¸¯ÅÍ ¶óÀÎ(str)°ú C char*¿¡ÀÇ Æ÷ÀÎÅÍ(endptr)¸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. ÇöÀç ecpg´Â ¹®ÀÚ¿ Àüü¸¦ ÇØ¼®Çϱ⠶§¹®¿¡, ¾ÆÁ÷ *endptr¿¡ ù ¹øÂ° ¹«È¿ ¹®ÀÚÀÇ ÁÖ¼Ò¸¦ ÀúÀåÀ» ÇÏ´Â °ÍÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡ endptr¸¦ ¾ÈÀüÇÏ°Ô NULL·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÇÔ¼ö´Â ¼º°ø ½Ã º¯È¯ ÈÄ Å¸ÀÓ½ºÅÛÇÁ¸¦ µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯ ½Ã, PGTYPESInvalidTimestamp°¡ µ¹¾Æ¿Í errno°¡ PGTYPES_TS_BAD_TIMESTAMP·Î ¼³Á¤µË´Ï´Ù. ÀÌ °ª¿¡ ´ëÇÑ Áß¿äÇÑ ¼³¸í¿¡ ´ëÇÑ °ÍÀº PGTYPESInvalidTimestamp ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
Åë»ó, ÀÔ·Â ¹®ÀÚ¿Àº Çã¿ëµÇ´Â ÀÏÀÚ ¼³¼º, °ø¹é ¹®ÀÚ, Çã¿ëµÇ´Â ½Ã°£ ¼³Á¤À» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ŸÀÓ½ºÅÛÇÁ´Â ecpg·Î Áö¿øµÇÁö ¾ÊÀº Á¡¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, ¿¹¸¦ µé¾î, PostgreSQL¼¹ö°¡ ½Ç½ÃÇÏ´Â °è»ê°ú °°Àº °ÍÀ» ½Ç½ÃÇÒ ¼ö ¾ø½À´Ï´Ù. ½Ã°£´ë ¼³Á¤Àº °æ°í ¾øÀÌ ¹«½ÃµË´Ï´Ù.
ÀÌÇÏÀÇ Ç¥¿¡ ÀÔ·Â ¹®ÀÚ¿ÀÇ ¿¹¸¦ ¸î °³ °¡¸®Åµ´Ï´Ù.
Table 31-4. À¯È¿ÇÑPGTYPEStimestamp_from_ascÀÇ ÀÔ·Â ¼½Ä
| ÀÔ·Â | °á°ú |
|---|---|
| 1999-01-08 04:05:06 | 1999-01-08 04:05:06 |
| January 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);
ÀÌ ÇÔ¼ö´Â ÇöÀçÀÇ Å¸ÀÓ½ºÅÛÇÁ¸¦ ²¨³», ts°¡ Áö½ÃÇϴ ŸÀÓ½ºÅÛÇÁÇü º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
PGTYPEStimestamp_fmt_asc
¼½Ä ¸¶½ºÅ©¸¦ »ç¿ëÇØ ŸÀÓ½ºÅÛÇÁÇü º¯¼ö¸¦ C char*·Î º¯È¯ÇÕ´Ï´Ù.
int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmtstr);
ÀÌ ÇÔ¼ö´Â, ù ¹øÂ° ÀÎÀÚ·Î º¯È¯ ´ë»óÀÇ Å¸ÀÓ½ºÅÛÇÁ(ts), Ãâ·Â ¹öÆÛÀÇ Æ÷ÀÎÅÍ(output), Ãâ·Â ¹öÆÛ·Î ÇÒ´ç °¡´ÉÇÑ °¡Àå ±ä (str_len), º¯È¯¿¡ »ç¿ëÇÏ´Â ¼½Ä ¸¶½ºÅ©(fmtstr)¸¦ ¹Þ¾ÆµéÀÔ´Ù.
¼º°ø ½Ã, ÇÔ¼ö´Â 0À» µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì´Â ºÎÀÇ °ªÀÌ µ¹¾Æ°©´Ï´Ù.
¼½Ä ¸¶½ºÅ©¿¡´Â ÀÌÇÏÀÇ ¼½Ä ¼³Á¤À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼½Ä ¼³Á¤Àº
libcÀÇ strftimeÇÔ¼ö¿¡¼ »ç¿ëµÇ´Â °Í°ú °°½À´Ï´Ù.
¼½Ä ¼³Á¤ À̿ܿ¡´Â Ãâ·Â ¹öÆÛ¿¡ º¹»çµË´Ï´Ù.
%A - °¢ ¾ð¾îÀÇ ¿äÀÏ ¸íĪ¿¡ ġȯµË´Ï´Ù.
%a - °¢ ¾ð¾îÀÇ ¿äÀÏ ¾àĪ¿¡ ġȯµË´Ï´Ù.
%B - °¢ ¾ð¾îÀÇ ¿ù ¸íĪ¿¡ ġȯµË´Ï´Ù.
%b - °¢ ¾ð¾îÀÇ ¿ù ¾àĪ¿¡ ġȯµË´Ï´Ù.
%C - ³âÀ» 100À¸·Î ³ª´« 10 Áø¼ö¿¡ ġȯµË´Ï´Ù. 1ÀÚ¸®¼öÀÇ °æ¿ì´Â ¼±µÎ¿¡ 0ÀÌ ºÎ¿©µË´Ï´Ù.
%c - °¢ ¾ð¾îÀÇ ÀÏÀÚ¿Í ½Ã°£À¸·Î ġȯµË´Ï´Ù.
%D - %m/%d/%y°ú °°½À´Ï´Ù.
%d - ¿ùÀÇ 10Áø³¯Â¥(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 - ¿ùÀÇ 10Áø³¯Â¥(1-31)¿¡ ġȯµË´Ï´Ù. 1ÀÚ¸®¼öÀÇ °æ¿ì´Â ¾Õ¿¡ °ø¹éÀ» ºÙÀÏ ¼ö ÀÖ½À´Ï´Ù.
%F - %Y-%m-%d°ú °°½À´Ï´Ù.
%G - ¼¼±âºÎÀÇ 10 Áø¼ö·Î¼ ³â¿¡ ġȯµË´Ï´Ù. ÀÌ ¿¬Àº ÁֺκÐÀÌ º¸´Ù ¸¹ÀÌ Æ÷ÇԵ˴ϴÙ. (¿ù¿äÀÏÀÌ ÁÖÀÇ Ã¹ ¹øÂ° ³¯ÀÔ´Ï´Ù. )
%g -%G°°ÀÌ ÇØ¿¡ ġȯµË´Ï´Ù¸¸, ¼¼±âºÎ°¡ ¾ø´Â 10 Áø¼ö(00-99)ÀÔ´Ï´Ù.
%H - 10ÁøÀÇ ½Ã°£(24½Ã°£ ´ÜÀ§)¿¡ ġȯµË´Ï´Ù(00-23).
%h - %b°ú °°½À´Ï´Ù.
%I - 10ÁøÀÇ ½Ã°£(12½Ã°£ ´ÜÀ§)¿¡ ġȯµË´Ï´Ù(01-12).
%j - 10ÁøÀÇ ¿¬³» ³¯Â¥¿¡ ġȯµË´Ï´Ù(001-366).
%k - 10ÁøÀÇ ½Ã°£(24½Ã°£ ´ÜÀ§)¿¡ ġȯµË´Ï´Ù(0-23). 1ÀÚ¸®¼öÀÇ °æ¿ì´Â ¼±µÎ¿¡ °ø¹éÀ» ºÙÀÏ ¼ö ÀÖ½À´Ï´Ù.
%l - 10ÁøÀÇ ½Ã°£(12½Ã°£ ´ÜÀ§)¿¡ ġȯµË´Ï´Ù(1-12). 1ÀÚ¸®¼öÀÇ °æ¿ì´Â ¼±µÎ¿¡ °ø¹éÀ» ºÙÀÏ ¼ö ÀÖ½À´Ï´Ù.
%M - 10ÁøÀÇ ºÐ¼ö¿¡ ġȯµË´Ï´Ù(00-59).
%m -10ÁøÀÇ ¿ù¼ö¿¡ ġȯµË´Ï´Ù(01-12).
%n - »õ·Î¿î Çà¿¡ ġȯµË´Ï´Ù.
%O* - %E*°ú °°½À´Ï´Ù.
%p - °¢ ¾ð¾îÀÇ "¿ÀÀü" ¶Ç´Â "¿ÀÈÄ"¿¡ ÀûÀýÈ÷ ġȯµË´Ï´Ù.
%R - %H:%M°ú °°½À´Ï´Ù.
%r - %I:%M:%S %p°ú °°½À´Ï´Ù.
%S - 10ÁøÀÇ Ãʼö¿¡ ġȯµË´Ï´Ù(00-60).
%s - ½Å±â¿ø, UTC·ÎºÎÅÍÀÇ Ãʼö¿¡ ġȯµË´Ï´Ù.
%T - %H:%M:%S°ú °°½À´Ï´Ù.
%t - ÅÇ¿¡ ġȯµË´Ï´Ù.
%U - 10ÁøÀÇ ÁÖ¹øÈ£(ÀÏ¿äÀÏÀÌ ÁÖÀÇ ¼±µÎÀÔ´Ï´Ù)¿¡ ġȯµË´Ï´Ù.
%u - 10ÁøÀÇ ÁÖ¹øÈ£(¿ù¿äÀÏÀÌ ÁÖÀÇ ¼±µÎÀÔ´Ï´Ù)¿¡ ġȯµË´Ï´Ù.
%V - 10ÁøÀÇ ¿¬³»ÀÇ ÁÖ¹øÈ£(¿ù¿äÀÏÀÌ ÁÖÀÇ ¼±µÎÀÔ´Ï´Ù)¿¡ ġȯµË´Ï´Ù(01-53). »õ·Î¿î ÇØ·Î, 1¿ù 1ÀÏÀ» Æ÷ÇÔÇÑ ÁÖ°¡ 4ÀÏ ÀÌ»ó Á¸ÀçÇÏ´Â °æ¿ì, ±× ÁÖ°¡ 1ÀÌ µË´Ï´Ù. ¾Æ´Ï¸é, ÀÌ ÁÖ´Â Àü ³âÀÇ ÁÖ°¡ µÇ¾î, ´ÙÀ½ÀÇ ÁÖ°¡ 1ÀÌ µË´Ï´Ù.
%v - %e-%b-%Y°ú °°½À´Ï´Ù.
%W - 10ÁøÀÇ ¿¬³»ÀÇ ÁÖ¹øÈ£(¿ù¿äÀÏÀÌ ÁÖÀÇ ¼±µÎÀÔ´Ï´Ù)¿¡ ġȯµË´Ï´Ù(00-53).
%w - 10ÁøÀÇ ÁÖ³» ³¯Â¥(ÀÏ¿äÀÏÀÌ ÁÖÀÇ ¼±µÎÀÔ´Ï´Ù)¿¡ ġȯµË´Ï´Ù(0-6).
%X - °¢ ¾ð¾îÀÇ ½Ã°£À¸·Î ġȯµË´Ï´Ù.
%x - °¢ ¾ð¾îÀÇ ÀÏÀÚ Ç¥Çö¿¡ ġȯµË´Ï´Ù.
%Y - 10ÁøÀÇ ¼¼±âºÎ ³â¿¡ ġȯµË´Ï´Ù.
%y - 10ÁøÀÇ ¼¼±â ¾øÀÌ ³â¿¡ ġȯµË´Ï´Ù(00-99).
%Z - ½Ã°£´ë ¸íĪ¿¡ ġȯµË´Ï´Ù.
%z - UTC·ÎºÎÅÍÀÇ ½Ã°£´ë ¿ÀÇÁ¼Â(offset)¿¡ ġȯµË´Ï´Ù. UTCº¸´Ù µ¿ÂÊ¿¡¼´Â Á¤ºÎÈ£°¡ µÚµû¸£°í, ¼ÂÊ¿¡¼´Â ºÎºÎÈ£°¡ ºÙ½À´Ï´Ù. °¢°¢ 2ÀÚ¸®¼öÀÇ ½Ã°£°ú ºÐÀÌ ±× ÈÄ¿¡ °è¼ÓµË´Ï´Ù¸¸, ´Ü¶ôÀº ¾ø½À´Ï´Ù. (ÀÌ Çü½ÄÀº RFC 822ÀÇ ÀÏÀÚ Çì´õ·Î ÀÚÁÖ »ç¿ëµË´Ï´Ù. )
%+ - °¢ ¾ð¾îÀÇ ÀÏÀÚ¿Í ½Ã°¢¿¡ ġȯµË´Ï´Ù.
%-* - GNU libc È®ÀåÀÔ´Ï´Ù. ¼öÄ¡ Ãâ·ÂÀ» ½Ç½ÃÇÒ ¶§¿¡ ¾Æ¹« ¹®ÀÚ¸¦ ä¿ìÁö ¾Ê½À´Ï´Ù.
$_* - GNU libcÀÇ È®ÀåÀÔ´Ï´Ù. ¸í½ÃÀûÀ¸·Î °ø¹é ¹®ÀÚ¸¦ »ç¿ëÇØ ¹®ÀÚ¸¦ ä¿ó´Ï´Ù.
%0* - GNU libcÀÇ È®ÀåÀÔ´Ï´Ù. ¸í½ÃÀûÀ¸·Î 0À» »ç¿ëÇØ ¹®ÀÚ¸¦ ä¿ó´Ï´Ù.
%% - %¿¡ ġȯµË´Ï´Ù.
PGTYPEStimestamp_sub
ŸÀÓ½ºÅÛÇÁÀÇ °¨»êÀ» ½Ç½ÃÇØ, ±× °á°ú¸¦ ½Ã°£ °£°Ý(ºÐ)ÀÇ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
int PGTYPEStimestamp_sub(timestamp *ts1, timestamp *ts2, interval *iv);
ÀÌ ÇÔ¼ö´Â ts1°¡ Áö½ÃÇϴ ŸÀÓ ½ºÅÆÇÁÇü º¯¼ö¿¡¼ ts2°¡ Áö½ÃÇϴ ŸÀÓ½ºÅÛÇÁÇü º¯¼ö¸¦ °¡°¨ÇØ, 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ÀÇ Æ÷ÀÎÅ͸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. À̰ÍÀº, ½Ã°£ °£°Ý °ªÀ» ŸÀÓ½ºÅÛÇÁ °ª¿¡ °¡»êÇØ, ±× °á°ú ŸÀÓ½ºÅÛÇÁ °ªÀ» tout°¡ Áö½ÃÇÏ´Â º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
ÀÌ ÇÔ¼ö´Â ¼º°øÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì´Â ºÎÀÇ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
PGTYPEStimestamp_sub_interval
ŸÀÓ½ºÅÛÇÁÇü º¯¼ö¿¡¼ ½Ã°£ °£°ÝÇü º¯¼ö¸¦ »®´Ï´Ù.
int PGTYPEStimestamp_sub_interval(timestamp *tin, interval *span, timestamp *tout);
ÀÌ ÇÔ¼ö´Â tin°¡ Áö½ÃÇϴ ŸÀÓ½ºÅÛÇÁÇü º¯¼ö·ÎºÎÅÍ span°¡ Áö½ÃÇÏ´Â ½Ã°£ °£°ÝÇü º¯¼ö¸¦ °¡°¨ÇÕ´Ï´Ù. °á°ú´Â tout°¡ Áö½ÃÇÏ´Â º¯¼ö¿¡ º¸Á¸µË´Ï´Ù.
ÇÔ¼ö´Â ¼º°øÇϸé 0À», ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì´Â ºÎÀÇ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
C¿¡¼ÀÇ ½Ã°£ °£°ÝÇüÀº ÇÁ·Î±×·¥¿¡¼ SQLÀÇ ½Ã°£ °£°ÝÇüÀÇ µ¥ÀÌÅ͸¦ Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. PostgreSQL¼¹ö¿¡ ´ëÀÀÇÏ´Â ÇüÅ¿¡ ´ëÇØ¼´Â Section 8.5À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
ÀÌÇÏÀÇ ÇÔ¼ö¸¦ »ç¿ëÇØ, ½Ã°£ °£°ÝÇüÀ» Ãë±ÞÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
PGTYPESinterval_new
»õ·Ó°Ô ÇÒ´çÇÑ ½Ã°£ °£°ÝÇü º¯¼ö¿¡ Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù.
interval *PGTYPESinterval_new(void);
PGTYPESinterval_free
ÀÌÀü¿¡ ÇÒ´çµÈ ½Ã°£ °£°ÝÇü º¯¼öÀÇ ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù.
void PGTYPESinterval_new(interval *intvl);
PGTYPESinterval_from_asc
ÅØ½ºÆ® Ç¥ÇöÀ¸·ÎºÎÅÍ ½Ã°£ °£°ÝÇüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
interval *PGTYPESinterval_from_asc(char *str, char **endptr);
ÀÌ ÇÔ¼ö´Â ÀÔ·Â ¹®ÀÚ¿str¸¦ º¯È¯ÇØ, ÇÒ´çµÈ ½Ã°£ °£°ÝÇü¿¡ Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù. ÇöÀç ecpg´Â ¹®ÀÚ¿ Àüü¸¦ ÇØ¼®Çϱ⠶§¹®¿¡, ¾ÆÁ÷ *endptr¿¡ ù ¹øÂ° ¹«È¿ ¹®ÀÚÀÇ Àå¼Ò¸¦ ÀúÀåÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡ endptr¸¦ ¾ÈÀüÇÏ°Ô NULL·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù.
PGTYPESinterval_to_asc
½Ã°£ °£°ÝÇü º¯¼ö¸¦ ÅØ½ºÆ® Ç¥ÇöÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
char *PGTYPESinterval_to_asc(interval *span);
ÀÌ ÇÔ¼ö´Â span°¡ Áö½ÃÇÏ´Â ½Ã°£ °£°ÝÇü º¯¼ö¸¦ C char*·Î º¯È¯ÇÕ´Ï´Ù. Ãâ·ÂÀº @ 1 day 12 hours 59 mins 10 secs¿Í °°ÀÌ µË´Ï´Ù.
PGTYPESinterval_copy
½Ã°£ °£°ÝÇü º¯¼ö¸¦ º¹»çÇÕ´Ï´Ù.
int PGTYPESinterval_copy(interval *intvlsrc, interval *intvldest);
ÀÌ ÇÔ¼ö´Â, intvlsrc°¡ Áö½ÃÇÏ´Â ½Ã°£ °£°ÝÇü º¯¼ö¸¦ intvldest°¡ Áö½ÃÇÏ´Â º¯¼ö¿¡ º¹»çÇÕ´Ï´Ù. »çÀü¿¡ º¯¼ö¿ëÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ Çʿ䰡 ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.
10 Áø¼öÇüÀº ¼öÄ¡Çü°ú ºñ½ÁÇÕ´Ï´Ù. ±×·¯³ª, ±× ÃÖ´ë Á¤¹Ðµµ´Â 30 À¯È¿ÀÚ¸®¼ö·Î Á¦Çѵǰí ÀÖ½À´Ï´Ù. heap»ó¿¡¼¸¸ ÀÛ¼ºµÇ´Â ¼öÄ¡Çü°ú ºñ±³ÇØ 10 Áø¼öÇüÀº ½ºÅà ¶Ç´Â heap»ó¿¡ ÀÛ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ ¶§¹®¿¡´Â PGTYPESdecimal_new() ¹× PGTYPESdecimal_free() ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ) Section 31.9¿¡¼ ¼³¸íµÇ´Â Informixȣȯ ¸ðµå¿¡¼´Â 10 Áø¼öÇüÀ» Ãë±ÞÇÏ´Â ÇÔ¼ö°¡ º¸´Ù ¸¹ÀÌ Á¸ÀçÇÕ´Ï´Ù.
ÀÌÇÏÀÇ ÇÔ¼ö¸¦ »ç¿ëÇØ, 10 Áø¼öÇüÀ» Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰͵éÀº libcompat¶óÀ̺귯¸®¿¡ Æ÷ÇԵǴ »Ó¸¸ÀÌ ¾Æ´Õ´Ï´Ù.
PGTYPESdecimal_new
»õ·Ó°Ô ÇÒ´çµÈ 10 Áø¼öÇü º¯¼ö¿¡ Æ÷ÀÎÅ͸¦ ¿ä±¸ÇÕ´Ï´Ù.
decimal *PGTYPESdecimal_new(void);
PGTYPESdecimal_free
10 Áø¼öÇüÀ» Ç®°í, ±× ¸Þ¸ð¸®¸¦ ¸ðµÎ ÇØÁ¦ÇÕ´Ï´Ù.
void PGTYPESdecimal_free(decimal *var);
ÀÎÀÚ´Â ¼öÄ¡Çü º¯¼ö(¶Ç´Â ¼öÄ¡Çü º¯¼öÀÇ Æ÷ÀÎÅÍ)¸¦ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª ½ÇÁ¦ÀÇ ¸Þ¸ð¸®»óÀÇ Ç¥ÇöÀº ¹«È¿ÀÔ´Ï´Ù.
¿À¹öÇ÷ο찡 ¹ß»ýÇß½À´Ï´Ù. ¼öÄ¡ÇüÀº ÀÓÀÇÀÇ Á¤¹Ðµµ¸¦ Ãë±ÞÇÒ ¼ö Àֱ⠶§¹®¿¡, ¼öÄ¡Çü º¯¼ö¿¡¼ ´Ù¸¥ ÇüÅ·ÎÀÇ º¯È¯¿¡¼ ¿À¹öÇ÷ο찡 ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
¾ð´õ Ç÷οì(underflow)°¡ ¹ß»ýÇß½À´Ï´Ù. ¼öÄ¡ÇüÀº ÀÓÀÇÀÇ Á¤¹Ðµµ¸¦ Ãë±ÞÇÒ ¼ö Àֱ⠶§¹®¿¡, ¼öÄ¡Çü º¯¼ö¿¡¼ ´Ù¸¥ ÇüÅ·ÎÀÇ º¯È¯¿¡¼´Â ¾ð´õÇ÷ο찡 ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
0 ³ª´°¼ÀÀÌ ½ÃÇàµÇ¾ú½À´Ï´Ù.
¹«È¿ÀΠŸÀÓ½ºÅÛÇÁ¸¦ ³ªÅ¸³»´Â ŸÀÓ½ºÅÛÇÁÇüÀÇ °ªÀÔ´Ï´Ù.
À̰ÍÀº PGTYPEStimestamp_from_ascÇÔ¼ö¿¡ ´ëÇØ ÇØ¼® ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
ŸÀÓ½ºÅÛÇÁ µ¥ÀÌÅÍÇüÀÇ ³»ºÎ Ç¥Çö°ú, µ¿½Ã¿¡ PGTYPESInvalidTimestamp´Â À¯È¿ÇÑ Å¸ÀÓ½ºÅÛÇÁÀ̱⵵ ÇÕ´Ï´Ù.
À̰ÍÀº 1899-12-31 23:59:59°ú ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.
¿¡·¯¸¦ °ËÃâÇϱâ À§Çؼ, ¾îÇø®ÄÉÀ̼ÇÀ¸·Î PGTYPESInvalidTimestamp¸¦ °Ë»çÇÒ »Ó¸¸ ¾Æ´Ï¶ó,
°¢ PGTYPEStimestamp_from_ascÈ£Ãâ ÈÄ¿¡errno ! = 0µµ °Ë»çÇØ ÁÖ¼¼¿ä.