31.8. pgtypes ¶óÀ̺귯¸®

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);

31.8.1. ¼öÄ¡Çü

¼öÄ¡Çü¿¡¼­´Â, ÀÓÀÇÀÇ Á¤¹Ðµµ¸¦ °¡Áø °è»ê ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. 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 Áø¼öÇüÀº Á¦ÇѺÎÀÇ ¼öÄ¡ÇüÀ¸·Î¼­ ±¸ÇöµÇ°í Àֱ⠶§¹®¿¡, ÀÌ º¯È¯¿¡¼­´Â ¿À¹öÇ÷ο찡 ÀϾÁö ¾Ê½À´Ï´Ù.

31.8.2. µ¥ÀÌÅÍÇü

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

31.8.3. ŸÀÓ½ºÅÛÇÁÇü

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À», ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì´Â ºÎÀÇ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.

31.8.4. ½Ã°£ °£°ÝÇü

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°¡ Áö½ÃÇÏ´Â º¯¼ö¿¡ º¹»çÇÕ´Ï´Ù. »çÀü¿¡ º¯¼ö¿ëÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ Çʿ䰡 ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.

31.8.5. 10 Áø¼öÇü

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);

31.8.6. pgtypeslibÀÇ errno °ª

PGTYPES_NUM_BAD_NUMERIC

ÀÎÀÚ´Â ¼öÄ¡Çü º¯¼ö(¶Ç´Â ¼öÄ¡Çü º¯¼öÀÇ Æ÷ÀÎÅÍ)¸¦ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª ½ÇÁ¦ÀÇ ¸Þ¸ð¸®»óÀÇ Ç¥ÇöÀº ¹«È¿ÀÔ´Ï´Ù.

PGTYPES_NUM_OVERFLOW

¿À¹öÇ÷ο찡 ¹ß»ýÇß½À´Ï´Ù. ¼öÄ¡ÇüÀº ÀÓÀÇÀÇ Á¤¹Ðµµ¸¦ Ãë±ÞÇÒ ¼ö Àֱ⠶§¹®¿¡, ¼öÄ¡Çü º¯¼ö¿¡¼­ ´Ù¸¥ ÇüÅ·ÎÀÇ º¯È¯¿¡¼­ ¿À¹öÇ÷ο찡 ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

PGTYPES_NUM_OVERFLOW

¾ð´õ Ç÷οì(underflow)°¡ ¹ß»ýÇß½À´Ï´Ù. ¼öÄ¡ÇüÀº ÀÓÀÇÀÇ Á¤¹Ðµµ¸¦ Ãë±ÞÇÒ ¼ö Àֱ⠶§¹®¿¡, ¼öÄ¡Çü º¯¼ö¿¡¼­ ´Ù¸¥ ÇüÅ·ÎÀÇ º¯È¯¿¡¼­´Â ¾ð´õÇ÷ο찡 ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

PGTYPES_NUM_DIVIDE_ZERO

0 ³ª´°¼ÀÀÌ ½ÃÇàµÇ¾ú½À´Ï´Ù.

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¸¦ °Ë»çÇÒ »Ó¸¸ ¾Æ´Ï¶ó, °¢ PGTYPEStimestamp_from_ascÈ£Ãâ ÈÄ¿¡errno ! = 0µµ °Ë»çÇØ ÁÖ¼¼¿ä.