9.9. ÀÏÀÚ/½Ã°¢ ÇÔ¼ö¿Í ¿¬»êÀÚ

Table 9-26(Àº)´Â, ÀÏÀÚ/½Ã°¢ÇüÀÇ °ªÀÇ Ã³¸®·Î »ç¿ë °¡´ÉÇÑ ÇÔ¼ö¸¦ ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº, ÀÌÇÏÀÇ ºÎÀý·Î ¼³¸íÇÕ´Ï´Ù. Table 9-25(Àº)´Â, (+,*µîÀÇ) ±âº»ÀûÀÎ »ê¼ú ¿¬»êÀÚÀÇ ÇൿÀ» ¼³¸íÇϰí ÀÖ½À´Ï´Ù. ¼­½Ä ¼³Á¤ ÇÔ¼ö¿¡ ´ëÇØ¼­´ÂSection 9.8À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Section 8.5(À»)¸¦ ÂüÁ¶ÇØ, ÀÏÀÚ/½Ã°¢ µ¥ÀÌÅÍÇü¿¡ ´ëÇÑ ¹è°æÀÌ µÇ°í ÀÖ´Â Á¤º¸¿¡ Á¤ÅëÇϰí ÀÖ¾î¾ß ÇÕ´Ï´Ù.

ÈļúÀÇtimeȤÀºtimestampÇüÀÇ ÀÔ·ÂÀ» ¹Þ´Â ÇÔ¼ö ¹× ¿¬»êÀÚ´Â ¸ðµÎ, ½ÇÁ¦·Î´Â 2°³ÀÇ Á¾·ù°¡ ÀÖ½À´Ï´Ù. 1°³´Âtime with time zoneÇü ¶Ç´Âtimestamp with time zoneÇüÀ» ÃëÇØ¼­, ÀÌ¹Ì 1°³´Âtime without time zoneÇü ȤÀºtimestamp without time zoneÇüÀ» ÃëÇÏ´Â °ÍÀÔ´Ï´Ù. »ý·«À̱⠶§¹®¿¡, ÀÌ·¯ÇÑ Á¾·ùÀÇ Â÷ÀÌ´Â °³º°ÀûÀ¸·Î °¡¸®Å°°í ÀÖÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ,+¹×*¿¬»êÀÚ´Â ±³È¯ ¿¬»êÀÚ¸¦ °¡Áý´Ï´Ù(¿¹¸¦ µé¸é date + integer¿Í integer + date). ÀÌ·¯ÇÑ Æí¼ºÀº ´Ù¸¥ ÇÑÂʸ¸ °¡¸®Åµ´Ï´Ù.

Table 9-25. ÀÏÀÚ/½Ã°¢ ¿¬»êÀÚ

¿¬»êÀÚ¸í ¿¹ °á°ú
+ date '2001-09-28' + integer '7' date '2001-10-05'
+ date '2001-09-28' + interval '1 hour' timestamp '2001-09-28 01:00:00'
+ date '2001-09-28' + time '03:00' timestamp '2001-09-28 03:00:00'
+ interval '1 day' + interval '1 hour' interval '1 day 01:00:00'
+ timestamp '2001-09-28 01:00' + interval '23 hours' timestamp '2001-09-29 00:00:00'
+ time '01:00' + interval '3 hours' time '04:00:00'
- - interval '23 hours' interval '-23:00:00'
- date '2001-10-01' - date '2001-09-28' integer '3'
- date '2001-10-01' - integer '7' date '2001-09-24'
- date '2001-09-28' - interval '1 hour' timestamp '2001-09-27 23:00:00'
- time '05:00' - time '03:00' interval '02:00:00'
- time '05:00' - interval '2 hours' time '03:00:00'
- timestamp '2001-09-28 23:00' - interval '23 hours' timestamp '2001-09-28 00:00:00'
- interval '1 day' - interval '1 hour' interval '1 day -01:00:00'
- timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' interval '1 day 15:00:00'
* 900 * interval '1 second' interval '00:15:00'
* 21 * interval '1 day' interval '21 days'
* double precision '3.5' * interval '1 hour' interval '03:30:00'
/ interval '1 hour' / double precision '1.5' interval '00:40:00'

Table 9-26. ÀÏÀÚ/½Ã°¢ ÇÔ¼ö

ÇÔ¼ö¸í ¹Ýȯ°ªÇü ¼³¸í ¿¹ °á°ú
age(timestamp, timestamp) interval Àμö°£ÀÇ °¨»ê. ¿¬µµ¿Í ¿ùÀ» »ç¿ëÇÑ"½Éº¼¿¡ ÀÇÇÑ"°á°ú¸¦ »ý¼º age(timestamp '2001-04-10', timestamp '1957-06-13') 43 years 9 mons 27 days
age(timestamp) interval current_date·ÎºÎÅÍ °¨»ê age(timestamp '1957-06-13') 43 years 8 mons 3 days
clock_timestamp() timestamp with time zone ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢ÀÔ´Ï´Ù. (¹®Àå ½ÇÇൿ¾È º¯°æµË´Ï´Ù. ) Section 9.9.4(À»)¸¦ ÂüÁ¶.    
current_date date ÇöÀçÀÇ ÀÏÀÚ. Section 9.9.4(À»)¸¦ ÂüÁ¶    
current_time time with time zone ÇöÀçÀÇ ½Ã°¢. Section 9.9.4(À»)¸¦ ÂüÁ¶.    
current_timestamp timestamp with time zone ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢(ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã ÀÏÀÚ ½Ã°¢). Section 9.9.4(À»)¸¦ ÂüÁ¶.    
date_part(text, timestamp) double precision ¼­ºêÇʵåÀÇ Ãëµæ(extract¿Í °°´Ù). Section 9.9.1(À»)¸¦ ÂüÁ¶. date_part('hour', timestamp '2001-02-16 20:38:40') 20
date_part(text, interval) double precision ¼­ºêÇʵåÀÇ Ãëµæ(extract¿Í °°´Ù). Section 9.9.1(À»)¸¦ ÂüÁ¶. date_part('month', interval '2 years 3 months') 3
date_trunc(text, timestamp) timestamp ÁöÁ¤µÈ Á¤¹Ðµµ·Î Àß¶ó¼­ ¹ö¸². Section 9.9.2µµ ÂüÁ¶. date_trunc('hour', timestamp '2001-02-16 20:38:40') 2001-02-16 20:00:00
extract(field from timestamp) double precision ¼­ºêÇʵåÀÇ Ãëµæ. Section 9.9.1(À»)¸¦ ÂüÁ¶. extract(hour from timestamp '2001-02-16 20:38:40') 20
extract(field from interval) double precision ¼­ºêÇʵåÀÇ Ãëµæ. Section 9.9.1(À»)¸¦ ÂüÁ¶. extract(month from interval '2 years 3 months') 3
isfinite(timestamp) boolean ŸÀÓ ½ºÅÆÇÁÀÇ À¯ÇÑ(¹«ÇѰú µ¿ÀÏÇÏÁö ¾Ê´Ù) ¼º¿¡ ´ëÇÑ °Ë»ç isfinite(timestamp '2001-02-16 21:28:30') true
isfinite(interval) boolean ½Ã°£ °£°ÝÀÌ À¯ÇÑÇѰ¡ÀÇ °Ë»ç isfinite(interval '4 hours') true
justify_days(interval) interval 30 ÀÏÁֱⰡ 1¿ùÀ» ³ªÅ¸³»µµ·Ï ½Ã°£ °£°ÝÀ» Á¶Á¤ justify_days(interval '30 days') 1 month
justify_hours(interval) interval 24½Ã°£À» 1ÀÏ·Î ÇÒ ½Ã°£ °£°ÝÀÇ Á¶Á¤ justify_hours(interval '24 hours') 1 day
justify_interval(interval) interval justify_days¹×justify_hours¸¦ »ç¿ëÇÏ¿©, Ãß°¡ÀûÀÎ ºÎÈ£¿¡ ÀÇÇÑ Á¶Á¤À» ½Ç½ÃÇÑ ½Ã°£ °£°ÝÀÇ Á¶Á¤ justify_interval(interval '1 mon -1 hour') 29 days 23:00:00
localtime time ÇöÀçÀÇ ½Ã°¢. Section 9.9.4(À»)¸¦ ÂüÁ¶.    
localtimestamp timestamp ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢(ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã). Section 9.9.4(À»)¸¦ ÂüÁ¶.    
now() timestamp with time zone ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢(ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã). Section 9.9.4(À»)¸¦ ÂüÁ¶.    
statement_timestamp() timestamp with time zone ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢(ÇöÀçÀÇ ¸í·ÉÀÇ °³½Ã). Section 9.9.4(À»)¸¦ ÂüÁ¶.    
timeofday() text ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢. (clock_timestamp¿Í À¯»çÇմϸ¸,text¹®ÀÚ¿­·Î¼­ ¹ÝȯÇÕ´Ï´Ù. ) Section 9.9.4(À»)¸¦ ÂüÁ¶.    
transaction_timestamp() timestamp with time zone ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢(ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã). Section 9.9.4(À»)¸¦ ÂüÁ¶.    

ÀÌ·¯ÇÑ ÇÔ¼ö¿¡ ´õÇÏ¿©OVERLAPS SQL ¿¬»êÀÚ°¡ Áö¿øµÇ°í ÀÖ½À´Ï´Ù.

(
start1
, 
end1
) OVERLAPS (
start2
, 
end2
)
(
start1
, 
length1
) OVERLAPS (
start2
, 
length2
)

ÀÌ ½ÄÀº, 2°³ÀÇ ½Ã°£ °£°ÝÀÌ °ãÄ¡´Â(±× Á¾´ÜÀ¸·Î Á¤Àǵ˴ϴÙ) ¶§¿¡ true¸¦ ¹ÝȯÇÕ´Ï´Ù. °ãÄ¡Áö ¾Ê´Â °æ¿ì´Â false¸¦ ¹ÝȯÇÕ´Ï´Ù. Á¾´ÜÀº ÀÏÀÚ, ½Ã°¢, ŸÀÓ ½ºÅÆÇÁ, ȤÀº, ÀÏÀÚ/½Ã°¢/ŸÀÓ ½ºÅÆÇÁ¿¡ °è¼ÓµÇ´Â ½Ã°£ °£°ÝÀ¸·Î ÁöÁ¤µË´Ï´Ù.

SELECT (DATE '2001-02-16', DATE '2001-12-21') OVERLAPS
       (DATE '2001-10-30', DATE '2002-10-30');
Result: 
true
SELECT (DATE '2001-02-16', INTERVAL '100 days') OVERLAPS
       (DATE '2001-10-30', DATE '2002-10-30');
Result: 
false

timestamp with time zoneÀÇ °ª¿¡intervalÀÇ °ªÀ» ´õÇÒ ¶§(¶Ç´Âtimestamp with time zoneÀÇ °ªÀ¸·ÎºÎÅÍintervalÀÇ °ªÀ» °øÁ¦ÇÒ ¶§) ÀÏÀÇ ºÎºÐÀº, ÀÏÀÇ ¼ö·Î ³ªÅ¸³­ timestamp with time zoneÀÇ ÀÏÀÚ¸¦ ¸ÕÀú ÁøÇàÇÕ´Ï´Ù(ȤÀº ÈÄ¿¡ µÇµ¹¸³´Ï´Ù). ¼­¸ÓŸÀÓ¿¡ÀÇ ÀÌÇà¿¡ °ÉÄ£ º¯°æ¿¡ °üÇØ¼­´Â(¼¼¼ÇÀÇ ½Ã°£´ë°¡ DST¸¦ ÀνÄÇÏ°Ô µÇ¾î ÀÖÀ¸¸é),interval '1 day'°¡interval '24 hours'¿¡ µ¿ÀÏÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¿¹¸¦ µé¸é, ¼¼¼ÇÀÇ ½Ã°£´ë°¡ CST7CDT·Î ¼³Á¤µÇ¾î ÀÖÀ» ¶§¿¡, timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' ´Â,timestamp with time zone '2005-04-03 12:00-06'¸¦ °¡Á®¿É´Ï´Ù. ÇÑÆí °°Àº Ãʱâtimestamp with time zone¿¡interval '24 hours'¸¦ ´õÇϸé,timestamp with time zone '2005-04-03 13:00-06'¶ó°í ÇÏ´Â °á°ú°¡ µË´Ï´Ù. ±× ÀÌÀ¯´ÂCST7CDT½Ã°£´ë¿¡2005-04-03 02:00·Î ¼­¸ÓŸÀÓ¿¡ÀÇ º¯°æÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù.

9.9.1. EXTRACT, date_part

EXTRACT(
field
 FROM 
source
)

extractÇÔ¼ö´Â, ÀÏÀÚ/½Ã°¢ÀÇ °ªÀ¸·ÎºÎÅÍ ¿¬µµ³ª ³¯Â¥/½Ã°£µîÀÇ ¼­ºêÇʵ带 ÃßÃâÇÕ´Ï´Ù. source ´ÂtimestampÇü,timeÇü, ¶Ç´ÂintervalÇüÀÇ °ªÀÇ ½ÄÀ̾î¾ß ÇÕ´Ï´Ù (dateÇüÀÇ ½ÄÀºtimestampÇü¿¡ ij½ºÆ® µÇ±â ¶§¹®¿¡, ¶È°°ÀÌ »ç¿ë °¡´ÉÇÕ´Ï´Ù). field ´Â sourceÀÇ °ªÀ¸·ÎºÎÅÍ ¾î´À Çʵ带 ÃßÃâÇÏ´ÂÁö¸¦ ¼±ÅÃÇÏ´Â ½Äº°ÀÚ È¤Àº ¹®ÀÚ¿­ÀÔ´Ï´Ù. extractÇÔ¼ö´Âdouble precisionÇüÀÇ °ªÀ» ¹ÝȯÇÕ´Ï´Ù. ÀÌÇÏ¿¡ À¯È¿ÇÑ Çʵå¸íÀ» ³ªÅ¸³À´Ï´Ù.

century

¼¼±â

SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13');
Result: 
20
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
21

´ç½ÃÀÇ »ç¶÷µé¿¡°Ô´Â ±×·¯ÇÑ ÀǽÄÀº ¾ø¾ú½À´Ï´Ù¸¸, ÃÖÃÊÀÇ ¼¼±â´Â0001-01-01 00:00:00 AD·ÎºÎÅÍ ½ÃÀ۵˴ϴÙ. ÀÌ Á¤ÀÇ´Â ¸ðµç ±×·¹°í¸® ¾È ´Þ·Â(ÀÏ·Â)À» »ç¿ëÇÏ´Â ³ª¶ó¿¡¼­ Àû¿ëµÇ°í ÀÖ½À´Ï´Ù. 0À̶ó°í ÇÏ´Â °ªÀÇ ¼¼±â´Â ¾ø½À´Ï´Ù. -1ÀÇ ´ÙÀ½Àº 1ÀÔ´Ï´Ù. ÀÌ Á¤ÀÇ¿¡ ³³µæÇÒ ¼ö ¾øÀ¸¸é, ºÒÆòÀ» ¹ÙƼĭ ·Î¸¶¼ºÆÄ¿ï·Î´ë ¼º´çÀÇ ·Î¸¶È²¿Õ¿¡°Ô ÀüÇØ ÁÖ¼¼¿ä.

PostgreSQL¸±¸®½º 8.0 ÀÌÀüÀ¸·Î´Â, ¼¼±âÀÇ ¹øÈ£ºÎÀÇ °ü½À¿¡ µû¸£°í ÀÖÁö ¾Ê¾Ò½À´Ï´Ù. ´ÜÁö ¿¬µµ¸¦ 100À¸·Î °è»êÇÑ °ÍÀ» µ¹·ÁÁÖ°í ÀÖ¾ú½À´Ï´Ù.

day

(¿ù³»ÀÇ) ÀÏÀÚ Çʵå(1~31)

SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
16
decade

¿¬µµ Çʵ带 10À¸·Î ³ª´« °Í

SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
200
dow

ÇÑ ÁÖÀÇ ¿äÀÏ(0-6, ÀÏ¿äÀÏÀº 0) (timestamp°ª¿¡¼­¸¸ »ç¿ë)

SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
5

extractÇÔ¼öÀÇ ¿äÀÏ ¹øÈ£ÁöÁ¤Àº, to_charÇÔ¼öÀÇ ¿äÀÏ ¹øÈ£ÁöÁ¤°ú ´Ù¸¨´Ï´Ù.

doy

¿¬³»¿¡¼­ÀÇ Åë»ê ³¯Â¥(1~365/366)(timestamp°ª¿¡¼­¸¸ »ç¿ë)

SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
47
epoch

dateÇü°útimestampÇüÀÇ °ª¿¡ ´ëÇØ,1970-01-01 00:00:00·ÎºÎÅÍÀÇ Ãʼö(À½¼öÀÇ °æ¿ìµµ ÀÖ¾î). intervalÇüÀÇ °ªÀ¸·Î´Â ±× ½Ã°£ °£°Ý¿¡ À־ÀÇ ÃÊÀÇ ÇÕ°è.

SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-08');
Result: 
982384720

SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
Result: 
442800

ÀÌÇÏ¿¡, ÀÌ °æ°úÃʼö¸¦ ŸÀÓ ½ºÅÆÇÁ°ªÀ¸·Î º¯È¯ÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³À´Ï´Ù.

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720 * INTERVAL '1 second';
hour

½Ã°£ÀÇ Çʵå(0~23)

SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
20
microseconds

¼Ò¼ö ºÎºÐµµ Æ÷ÇÔÇÏ¿©, 1,000,000À» °öÇÑ ÃÊÇʵå. ¸ðµç Ãʸ¦ Æ÷ÇÔÇÏ´Â °Í¿¡ ÁÖÀÇ.

SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28. 5');
Result: 
28500000
millennium

¹Ð·¹´Ï¾ö(1 õ³â ±â°£)

SELECT EXTRACT(MILLENNIUM FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
3

1900³â´ëÀÇ ÇØ´Â Á¦2 ¹Ð·¹´Ï¾öÀÔ´Ï´Ù. Á¦3 ¹Ð·¹´Ï¾öÀº 2001³â 1¿ù 1ÀϺÎÅÍ ½ÃÀ۵˴ϴÙ.

PostgreSQL¸±¸®½º 8.0 ÀÌÀüÀ¸·Î´Â, ¹Ð·¹´Ï¾öÀÇ ¹øÈ£ºÎÀÇ °ü½À¿¡ µû¸£°í ÀÖÁö ¾Ê¾Ò½À´Ï´Ù. ´ÜÁö ¿¬µµ Çʵ带 1000À¸·Î ³ª´« °ªÀ» ¹ÝȯÇÏ¿´½À´Ï´Ù.

milliseconds

¼Ò¼ö ºÎºÐµµ Æ÷ÇÔÇØ, 1000À» °öÇÒ ¼ö ÀÖ¾ú´ø ÃÊÇʵå. ¸ðµç Ãʸ¦ Æ÷ÇÔÇÏ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.

SELECT EXTRACT(MILLISECONDS FROM TIME '17:12:28.5');
Result: 
28500
minute

ºÐ Çʵå(0~59)

SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
38
month

timestampÇüÀÇ °ª¿¡ ´ëÇØ¼­´Â ¿¬ÁßÀÇ ¿ù¹øÈ£(1~12). intervalÇüÀÇ °ª¿¡ ´ëÇØ¼­´Â ¿ù¹øÈ£·Î, 12ÀÇ ³ª¸ÓÁö(0~11).

SELECT EXTRACT(MONTH FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
2

SELECT EXTRACT(MONTH FROM INTERVAL '2 years 3 months');
Result: 
3

SELECT EXTRACT(MONTH FROM INTERVAL '2 years 13 months');
Result: 
1
quarter

±× ³¯ÀÌ Æ÷ÇԵǴ ¿¬µµÀÇ 4ºÐ±â(1~4). (timestamp°ª¿¡¼­¸¸ Àû¿ë)

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
1
second

¼Ò¼ö¸¦ Æ÷ÇÔÇÑ ÃÊÇʵå(0~59, [1] ).

SELECT EXTRACT(SECOND FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
40

SELECT EXTRACT(SECOND FROM TIME '17:12:28. 5');
Result: 
28.5
timezone

ÃÊ´ÜÀ§ÀÇ UTC·ÎºÎÅÍÀÇ ½Ã°£´ë ¿ÀÇÁ¼Â(offset). ¾çÀÇ °ªÀº UTCº¸´Ù µ¿ÂÊÀÇ ½Ã°£´ë¿¡ ´ëÀÀÇØ, À½ÀÇ °ªÀº UTCº¸´Ù ¼­ÂÊÀÇ ½Ã°£´ë¿¡ ´ëÀÀ.

timezone_hour

½Ã°£´ë ¿ÀÇÁ¼Â(offset)½Ã°£ÀÇ ¼ººÐ.

timezone_minute

½Ã°£´ë ¿ÀÇÁ¼Â(offset)ÀÇ ºÐÀÇ ¼ººÐ.

week

±× ³¯ÀÇ ¿¬°£ Åë»ê¿¡¼­ÀÇ ÁÖ¸¦ °è»êÇÕ´Ï´Ù. (ISO 8601ÀÇ) Á¤ÀÇ¿¡¼­´Â, ±× ÇØÀÇ 1¿ù 4ÀÏÀÇ ÁÖ¸¦ Á¦1ÁÖ·Î ÇÕ´Ï´Ù (ISO 8601¿¡¼­´Â, ÁÖ´Â ¿ù¿äÀϺÎÅÍ ½ÃÀ۵˴ϴÙ). Áï, ±× ¿¬µµÀÇ ÃÖÃÊÀÇ ¸ñ¿äÀÏÀÌ ÀÖ´Â ÁÖ°¡ ±× ¿¬µµÀÇ Á¦1ÁÖ°¡ µÈ´Ù.

À̰Ϳ¡ ÀÇÇØ, 1¿ùÀÇ ÃʼøÀº Àü³âÀÇ Á¦52ÁÖ È¤Àº Á¦53ÁÖ°¡ µÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é,2005-01-01Àº 2004³âÀÇ Á¦53ÁÖÀ̸ç,2006-01-01´Â 2005³âÀÇ Á¦52ÁÖÀÇ ÀϺÎÀÔ´Ï´Ù.

SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
7
year

¿¬µµ Çʵå. 0 AD°¡ Á¸ÀçÇÏÁö ¾Ê´Ù´Â °ÍÀ» ±â¾ïÇϼ¼¿ä. ÀÌ ¶§¹®¿¡ADÀÇ ¿¬µµºÎÅÍBCÀÇ ¿¬µµ¸¦ °¨¼Ò ÇÒ ¶§¿¡´Â ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù.

SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 
2001

extractÇÔ¼ö´Â ¿ø·¡ ¿¬»ê ó¸®ÀÇ ¸ñÀûÀ̾ú½À´Ï´Ù. ÀÏÀÚ/½Ã°¢ÀÇ °ªÀ» Ç¥½ÃÇÏ´Â ¸ñÀû¿¡¼­ÀÇ ¼­½Ä¿¡ ´ëÇØ¼­´ÂSection 9.8À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

date_partÇÔ¼ö´Â ÀüÅëÀûÀÎIngres»ó¿¡¼­ ¼³°èµÈ °ÍÀ¸·Î, Ç¥ÁØSQLÀÇextractÇÔ¼ö¿Í µî°¡ÀÔ´Ï´Ù.

date_part('
field
', 
source
)

¿©±â¼­ field ¸Å°³º¯¼ö´Â À̸§Àº ¾Æ´Ï¶ó, ¹®ÀÚ¿­°ªÀÏ Çʿ䰡 ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. date_part·Î À¯È¿ÇÑ Çʵå¸íÀºextract¿Í °°½À´Ï´Ù.

SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');
Result: 
16

SELECT date_part('hour', INTERVAL '4 hours 3 minutes');
Result: 
4

9.9.2. date_trunc

date_truncÇÔ¼ö´Â °³³äÀûÀ¸·Î ¼öÄ¡¿¡ ´ëÇÑtruncÇÔ¼ö ¿Í À¯»çÇÕ´Ï´Ù.

date_trunc('
field
', 
source
)

source ´Â, µ¥ÀÌÅÍÇütimestampȤÀºintervalÀÇ Ç¥Çö°ª½ÄÀÔ´Ï´Ù (µ¥ÀÌÅÍÇüdate¿Ítime´Â °¢°¢ ÀÚµ¿ÀûÀ¸·ÎtimestampȤÀºinterval¿¡ ij½ºÆ® µË´Ï´Ù). field ´Â, ÀԷ°ªÀ» ¾î´À Á¤¹Ðµµ·Î Àß¶ó ¹ö¸®´ÂÁö¸¦ ¼±ÅÃÇÕ´Ï´Ù. ¹Ýȯ°ªÀº, ¼±ÅÃµÈ °Í ÀÌÇϸ¦ 0À¸·Î ¼³Á¤(Àϰú ¿ùÀÇ °æ¿ì´Â 1À¸·Î ¼³Á¤)ÇÑ, ¸ðµç Çʵ带 °¡Áö´ÂtimestampȤÀºintervalÇüÀÔ´Ï´Ù.

field ÀÇ À¯È¿°ª¿¡´Â ´ÙÀ½ÀÇ °ÍÀÌ ÀÖ½À´Ï´Ù.

microseconds
milliseconds
second
minute
hour
day
week
month
quarter
year
decade
century
millennium

¿¹£º

SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
Result: 
2001-02-16 20:00:00

SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
Result: 
2001-01-01 00:00:00

9.9.3. AT TIME ZONE

AT TIME ZONE±¸¹®À» »ç¿ëÇÏ´Â °ÍÀ¸·Î½á, ŸÀÓ ½ºÅÆÇÁ¸¦ ´Ù¸¥ ½Ã°£´ë·Î º¯È¯ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Table 9-27¿¡¼­ ±× Á¾·ù¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù.

Table 9-27. AT TIME ZONE Variants

½Ä ¹Ýȯ°ª ¼³¸í
timestamp without time zone AT TIME ZONE zone timestamp with time zone ÁÖ¾îÁø ŸÀÓ ½ºÅÆÇÁ without time zone °¡ ÁöÁ¤µÈ ½Ã°£´ë¿¡ ÀÖ´Ù°í Ãë±ÞÇÕ´Ï´Ù.
timestamp with time zone AT TIME ZONE zone ÁÖ¾îÁø ŸÀÓ ½ºÅÆÇÁ with time zone ¸¦ ½Å±ÔÀÇ ½Ã°£´ë·Î º¯È¯ÇÕ´Ï´Ù.  
time with time zone AT TIME ZONE zone time with time zone ÁÖ¾îÁ³À» ¶§ °¢ with time zone ¸¦ ½Å±Ô ½Ã°£´ë·Î º¯È¯ÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ ½Ä¿¡¼­´Â, ¼³Á¤ÇÏ´Â ½Ã°£´ë zone ´Â, ('PST'¿Í °°Àº) ÅØ½ºÆ® ¹®ÀÚ¿­, ¶Ç´Â(INTERVAL '-08:00'¿Í °°Àº) ½Ã°£ °£°ÝÀ¸·Î ÁöÁ¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÅØ½ºÆ®ÀÇ °æ¿ì,Section 8.5.3¿¡ ³ªÅ¸³½ ¹æ¹ýÀ¸·Î ½Ã°£´ë ¸íĪÀ» ÁöÁ¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù(·ÎÄÃÀÎ ½Ã°£´ë¸¦PST8PDT·Î ¼³Á¤Çϰí ÀÖ½À´Ï´Ù).

SELECT TIMESTAMP '2001-02-16 20:38:40' AT TIME ZONE 'MST';
Result: 
2001-02-16 19:38:40-08

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST';
Result: 
2001-02-16 18:38:40

ÃÖÃÊÀÇ ¿¹´Â, ½Ã°£´ë°¡ ¾ø´Â ŸÀÓ ½ºÅÆÇÁ¸¦ »ç¿ëÇØ, ±×°ÍÀ» MST ½Ã°£(UTC-7)À¸·Î¼­ ÇØ¼®ÇØ, UTC ŸÀÓ ½ºÅÆÇÁ¸¦ »ý¼ºÇÕ´Ï´Ù. ±×¸®°í, UTC ŸÀÓ ½ºÅÆÇÁ°¡, Ç¥½Ã¿ëÀ¸·Î PST(UTC-7)·Î º¯È¯µË´Ï´Ù. 2¹øÂ°ÀÇ ¿¹´Â, EST(UTC-5)·Î ÁöÁ¤µÈ ŸÀÓ ½ºÅÆÇÁ¸¦ »ç¿ëÇØ, MST(UTC-7)¿¡¼­ÀÇ ·ÎÄà ½Ã°£À¸·Î º¯È¯Çϰí ÀÖ½À´Ï´Ù.

ÇÔ¼ötimezone( zone , timestamp )´Â, SQL ÁذÅÀÇ ±¸¹® timestamp AT TIME ZONE zone ¿Í µ¿ÀÏÇÕ´Ï´Ù.

9.9.4. Current Date/Time

PostgreSQL´Â, ÇöÀçÀÇ ÀÏÀÚ ¹× ½Ã°¢¿¡ °ü°èµÈ °ªÀ» ¹ÝȯÇÏ´Â ¸¹Àº ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Ç¥ÁØ SQL ÇÔ¼ö´Â ¸ðµÎ, ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã½Ã°¢¿¡ ±Ù°ÅÇÑ °ªÀ» ¹ÝȯÇÕ´Ï´Ù.

CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(
precision
)
CURRENT_TIMESTAMP(
precision
)
LOCALTIME
LOCALTIMESTAMP
LOCALTIME(
precision
)
LOCALTIMESTAMP(
precision
)

CURRENT_TIME¹×CURRENT_TIMESTAMPÇÔ¼ö¿¡¼­´Â, ½Ã°£´ë¸¦ ¼ö¹ÝÇÏ´Â °ªÀ» Ãë±ÞÇÕ´Ï´Ù. ÇÑÆí,LOCALTIME¹×LOCALTIMESTAMPÇÔ¼ö¿¡¼­´Â, ½Ã°£´ë¸¦ ¼ö¹ÝÇÏÁö ¾Ê´Â °ªÀ» Ãë±ÞÇÕ´Ï´Ù.

CURRENT_TIME,CURRENT_TIMESTAMP,LOCALTIME, ¹×LOCALTIMESTAMPÇÔ¼ö¿¡¼­´Â, Á¤¹ÐµµÀÇ ÆÄ¶ó¹ÌÅ͸¦ ¿É¼ÇÀ¸·Î ÁÙ ¼ö°¡ ÀÖ¾î , ÃÊÇʵåÀÇ ¸¹Àº ¼Ò¼öºÎºÐÀÇ °á°ú¸¦ °¡Á®¿É´Ï´Ù. Á¤¹ÐµµÀÇ ÆÄ¶ó¹ÌÅͰ¡ ¾ø´Â °æ¿ì, °á°ú´Â »ç¿ë °¡´ÉÇÑ ÃÖ´ë Á¤¹Ðµµ·Î Ãâ·ÂµË´Ï´Ù.

¿¹£º

Some examples:

SELECT CURRENT_TIME;
Result: 
14:39:53.662522-05

SELECT CURRENT_DATE;
Result: 
2001-12-23

SELECT CURRENT_TIMESTAMP;
Result: 
2001-12-23 14:39:53.662522-05

SELECT CURRENT_TIMESTAMP(2);
Result: 
2001-12-23 14:39:53.66-05

SELECT LOCALTIMESTAMP;
Result: 
2001-12-23 14:39:53.662522

ÀÌ·¯ÇÑ ÇÔ¼ö´Â, ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã½Ã°¢À» ¹ÝȯÇÕ´Ï´Ù. ÀÌ °ªÀº, Æ®·£Àè¼Ç(transaction)ÀÌ ½ÇÇàµÇ°í ÀÖ´Â µ¿¾ÈÀº º¯È­ÇÏÁö ¾Ê½À´Ï´Ù. À̰ÍÀº, ´ÙÀ½ÀÇ ±â´ÉÀ» °ËÅäÇÑ °á°úÀÔ´Ï´Ù. ´ÜÀÏ Æ®·£Àè¼Ç(transaction)·Î,"current"½Ã°£À» Àϰü¼ºÀ» °¡Áø Ç¥ÇöÀ» ½Ç½ÃÇÒ ¼ö°¡ ÀÖµµ·Ï ÇÏ´Â °ÍÀ» ¸ñÀûÀ¸·Î ÇÏ¿©, ÀÌ ¶§¹®¿¡, µ¿ÀÏ Æ®·£Àè¼Ç(transaction)À¸·Î ¸î ȸ º¯°æÀ» ½Ç½ÃÇØµµ µ¿ÀÏÇÑ Å¸ÀÓ ½ºÅÆÇÁ¸¦ »ý¼ºÇÕ´Ï´Ù.

Note: ´Ù¸¥ µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ¿¡¼­´Â, ÀÌ·¯ÇÑ °ªÀ» º¸´Ù ºó¹øÇÏ°Ô Áõ°¡½ÃŰ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.

PostgreSQL´Â ¶Ç, ÇÔ¼ö¸¦ È£ÃâÇßÀ» ¶§ÀÇ ½ÇÁ¦ÀÇ ÇöÀç ½Ã°¢À̳ª ÇöÀçÀÇ ¹®ÀåÀÇ °³½Ã½Ã°¢À» ¹ÝȯÇÏ´Â ÇÔ¼öµµ Á¦°øÇÕ´Ï´Ù. ºñÇ¥ÁØ SQLÀÇ ÇÔ¼öÀÇ ÀüÀ϶÷À» ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.

now()
transaction_timestamp()
statement_timestamp()
clock_timestamp()
timeofday()

now()´ÂCURRENT_TIMESTAMP¿Í °°Àº °ÍÀ¸·Î, ÀüÅëÀûÀÎPostgreSQLÇÔ¼öÀÔ´Ï´Ù. transaction_timestamp()´ÂCURRENT_TIMESTAMP¿Í °°Àº °ÍÀÔ´Ï´Ù¸¸, ¸íÈ®ÇÏ°Ô ¹«¾ùÀÌ ¹ÝȯµÇ´ÂÁö¸¦ ³ªÅ¸³»´ÂÁö Áö¸íµÇ¾î ÀÖ½À´Ï´Ù. statement_timestamp()´Â ÇöÀçÀÇ ¹®ÀåÀÇ ½ÇÇà °³½Ã½Ã°¢À» ¹ÝȯÇÏ´Â °ÍÀÔ´Ï´Ù(º¸´Ù ±¸Ã¼ÀûÀ¸·Î ¸»Çϸé, Á÷ÀüÀÇ Ä¿¸àµå ¸Þ¼¼Áö¸¦ Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¹Þ¾ÒÀ» ¶§ÀÇ ½Ã°¢ÀÔ´Ï´Ù). statement_timestamp()¹×transaction_timestamp()´Â Æ®·£Àè¼Ç(transaction)ÀÇ ÃÖÃÊÀÇ Ä¿¸àµå¿¡¼­´Â °°Àº °ªÀ» ¹ÝȯÇÕ´Ï´Ù¸¸, ±× ÈÄ¿¡ °è¼ÓÇÏ´Â Ä¿¸àµå¿¡¼­´Â ´Ù¸¦ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. clock_timestamp()´Â ½ÇÁ¦ÀÇ ÇöÀç ½Ã°¢À» µ¹·ÁÁֱ⠶§¹®¿¡, ±× °ªÀº ´ÜÀÏÀÇ SQL Ä¿¸àµå¿Íµµ ´Ù¸¨´Ï´Ù. timeofday()´ÂPostgreSQLÀÇ ¿ª»çÀûÀÎ ÇÔ¼öÀÔ´Ï´Ù. clock_timestamp()°°ÀÌ, ½ÇÁ¦ÀÇ ÇöÀç ½Ã°¢À» ¹ÝȯÇÕ´Ï´Ù¸¸,timestamp with time zoneÇüÀÇ °ªÀº ¾Æ´Ï°í, Á¤ÇüµÈtext¹®ÀÚ¿­À» ¹ÝȯÇÕ´Ï´Ù.

¸ðµç ÀÏÀÚ/½Ã°¢ÇüÀº ¶Ç, ÇöÀçÀÇ ÀÏÀÚ¿Í ½Ã°¢(¹Ýº¹ÇÕ´Ï´Ù¸¸, Æ®·£Àè¼Ç(transaction)ÀÇ °³½Ã½Ã°¢À¸·Î¼­ ÇØ¼®µË´Ï´Ù)À» ³ªÅ¸³»´Â Ư¼öÇÑ ¸®ÅÍ·²°ª now¸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. µû¶ó¼­, ¾Æ·¡¿Í °°Àº 3°³ÀÇ ½ÇÇà °á°ú´Â ¸ðµÎ °°Àº °ªÀ» ¹ÝȯÇÕ´Ï´Ù.

SELECT CURRENT_TIMESTAMP;
SELECT now();
SELECT TIMESTAMP 'now';  -- incorrect for use with DEFAULT

Tip: Å×À̺íÀ» ÀÛ¼ºÇÒ ¶§,DEFAULT±¸¸¦ ÁöÁ¤Çϴµ¥ 3¹øÂ°ÀÇ Çü½ÄÀ» »ç¿ëÇÏ·Á°í´Â »ý°¢ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. Á¤¼ö°¡ ÇØ¼®µÇ¾úÀ» ¶§, ½Ã½ºÅÛÀÌnow¸¦timestamp·Î º¯È¯ÇϹǷÎ, µðÆúÆ®°ªÀ¸·Î¼­ Å×À̺íÀÌ ÀÛ¼ºµÇ¾úÀ» ¶§ÀÇ ½Ã°¢ÀÌ »ç¿ëµË´Ï´Ù. ÃÖÃÊÀÇ 2°³ÀÇ Çü½ÄÀº ÇÔ¼ö È£ÃâÀ» À§ÇØ µðÆúÆ®°ªÀÌ »ç¿ëµÉ ¶§±îÁö Æò°¡µÇÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, ÀÌ·¯ÇÑ ÇÔ¼ö´Â ¿­ÀÇ »ðÀÔ ½Ã°£À» µðÆúÆ®·Î ÇÏ´Â µ¿ÀÛÀ» ½ÇÇàÇÕ´Ï´Ù.

9.9.5. Áö¿¬ ½ÇÇà

ÀÌÇÏÀÇ ÇÔ¼ö´Â, ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ½ÇÇàÀ» Áö¿¬ ½Ã۱â À§Çؼ­»ç¿ë °¡´ÉÇÕ´Ï´Ù.

pg_sleep(
seconds
)

pg_sleep´Â, seconds Ãʰ¡ °æ°úÇÒ ¶§±îÁö, ÇöÀçÀÇ ¼¼¼ÇÀÇ ÇÁ·Î¼¼½º¸¦ Á¤Áö½Ãŵ´Ï´Ù. seconds ´Âdouble precisionÇüÀÇ °ªÀÔ´Ï´Ù. ±× ¶§¹®¿¡, ¼Ò¼ö ´ÜÀ§·Î Áö¿¬Ãʼö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

SELECT pg_sleep(1.5);

Note: Á¤Áö ½Ã°£ÀÇ È¿°úÀûÀÎ ÇØ°áÃ¥Àº ƯÁ¤ÇÑ Ç÷§Æû¿¡ ÀÖ½À´Ï´Ù. 0.01Ãʰ¡ ÀϹÝÀûÀÎ °ªÀÔ´Ï´Ù. Áö¿¬Àº Àû¾îµµ ÁöÁ¤ÇÑ ´ë·Î ÇàÇØÁý´Ï´Ù. ¼­¹öÀÇ ºÎÇϰ¡ ¿äÀÎÀÌ µÇ¾î, º¸´Ù ±æ¾îÁú °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

Warning

pg_sleep¸¦ È£ÃâÇÒ ¶§, ¼¼¼ÇÀÌ ÇÊ¿ä ÀÌ»óÀÇ ¶ôÀ» °É°í ÀÖÁö ¾ÊÀ½À» È®½ÇÈ÷ ÇØ¾ßÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´Ù¸¥ ¼¼¼ÇÀÌ Á¤Áö ÁßÀÇ ÇÁ·Î¼¼½º¸¦ ´ë±âÇØ¾ß ÇÒÁöµµ ¸ð¸¨´Ï´Ù. ±× ¶§¹®¿¡ ½Ã½ºÅÛ ÀüüÀÇ ¼Óµµ°¡ ÀúÇÏÇÏ°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù.

Notes

[1]

ÀÛµ¿ ½Ã½ºÅÛÀ¸·Î À±Ãʰ¡ ½ÇÇàµÇ°í ÀÖ´Â °æ¿ì´Â 60±îÁöÆ÷ÇÔ.