¡¡¡¡ÔÚ9i °æ±¾ÒÔÇ°£¬Oracle ûÓÐÄÚÖõķ½Ê½À´¼Ç¼ʱ¼äµÄÁ÷ÊÅ¡£DATEÐÍÊý¾ÝÓÃÀ´¼Ç¼µ¥¶ÀµÄʱ¼äµã£»µ«ÊÇÒª±í´ïÒ»¸öʱ¼äÁ¿£¨Ò²¾ÍÊÇÒ»¸ö¼ä¸ô£©£¬Êý¾Ý¿âµÄÉè¼ÆÕ߾ͱØÐë°Ñʱ¼ä¼ä¸ôת»»³ÉÔʼµ¥Î»Ã룬ȻºóÓÃÒ»¸öNUMBERÁÐÀ´±£´æËü¡£
¡¡¡¡ËäÈ»NUMBERÕâ¸öÊý¾ÝÀàÐÍ¿ÉÒÔÒÔÃëΪµ¥Î»×¼È·µØ±íʾʱ¼ä£¬µ«ÊÇËüʹµÃʱ¼äµÄ¼ÆËã±äµÃºÜÀ§ÄÑ¡£±ÈÈ磬60ÃëÊÇ1·ÖÖÓ£¬60·ÖÖÓÊÇ1¸öСʱ£¬24¸öСʱµÈÓÚ1Ìì----ÕâЩÊý×ÖÔÚÒÔÊ®½øÖÆΪ»ù´¡µÄÊý×ÖϵͳÖж¼ÊǷdz£õ¿½ÅµÄ¡£
¡¡¡¡ÔÚOracle 9iÖУ¬°´ÕÕSQL 99±ê×¼£¬Ôö¼ÓÁËʱ¼ä¼ä¸ôÐÍÊý¾ÝINTERVAL YEAR TO MONTH ºÍ INTERVAL DAY TO SECOND£¬ËüÃǺÍÆäËû¼¸ÖÖÊý¾ÝÀàÐÍÒ»ÆðʹµÃ¶Ôʱ¼äµÄ´¦Àí¸ü¼Ó׼ȷ¡£TIMESTAMP¡¢TIMESTAMP WITH TIME ZONEºÍTIMESTAMP WITH LOCAL TIME ZONEµÈÊý¾ÝÀàÐͶ¼°Ñʱ¼äµÄ±í´ï¾«È·µ½ÁËÈô¸É·ÖÖ®Ò»Ã룬¶øÇÒºóÃæÁ½ÖÖ»¹½â¾öÁ˵ØÀíλÖÃÔì³ÉµÄʱ¼ä±ä»¯¡£
¡¡¡¡ÔÚSQLºÍPL/SQLÖУ¬Ä㶼¿ÉÒÔÓÃʱ¼ä¼ä¸ôÐÍÊý¾Ý£¬ËüÃǶ¼ÊÇÓÃͬһÖÖ·½Ê½¹æ¶¨µÄ£º
[code]INTERVAL YEAR[(year_precision)] TO MONTH
INTERVAL DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)][/code]
¡¡¡¡¶ÔÓÚ¾«È·ÊýÖµ£¬¹æ¶¨ÓÐȱʡֵ£ºÄêºÍÈÕÊÇÁ½Î»Êý£¬Èô¸É·ÖÖ®Ò»ÃëÊÇÁùλÊý¡£
¡¡¡¡Ê±¼ä¼ä¸ôµÄ´óСÓÉINTERVALÀ´±íʾ£¬ºóÃæ½ô½ÓÒ»¸ö·ÅÔÚµ¥ÒýºÅÖеıí´ïʽ£¬ÒÔ¼°ÓÃÀ´½âÊ͸ñí´ïʽµÄÎÄ×Ö¡£ÓÃYEAR TO MONTH±íʾʱ¼ä¼ä¸ô´óСʱҪÔÚÄêºÍÔÂÖ®¼äÓÃÒ»¸öÁ¬×Ö·û(-) Á¬½Ó¡£¶øDAY TO SECOND±íʾʱ¼ä¼ä¸ô´óСʱҪÔÚÈÕºÍʱ¼äÖ®¼äÓÃÒ»¸ö¿Õ¸ñÁ¬½Ó¡£¾Ù¸öÀý×ÓÀ´Ëµ£¬ÏÂÃæÊÇ2Äê6¸öÔµÄʱ¼ä¼ä¸ôµÄ±íʾ·½·¨£º
[code]INTERVAL '2-6' YEAR TO MONTH[/code]
¡¡¡¡ÏÂÃæµÄÀý×Ó±íʾ3Ìì12¸öСʱ30·ÖÖÓ6.7Ã룺
[code]INTERVAL '3 12:30:06.7' DAY TO SECOND(1)[/code]
¡¡¡¡Ê±¼ä¼ä¸ô¿ÉÒÔΪÕý£¬Ò²¿ÉÒÔΪ¸º¡£ËüÃÇ¿ÉÒÔ´Ó¸÷ÖÖTIMESTAMPÊý¾ÝÀàÐÍÖмÓÉÏ»òÕß¼õÈ¥£¬´Ó¶øµÃµ½Ò»¸öеÄTIMESTAMPÊý¾ÝÀàÐÍ¡£ËüÃÇÖ®¼äÒ²¿ÉÒÔ×ö¼Ó¼õÔËËãµÃµ½ÐµÄʱ¼ä¼ä¸ô¡£
¡¡¡¡ÁбíA˵Ã÷ÁËÔõÑù´´½¨Ò»¸ö±í¸ñÀ´¼Ç¼һ¸öʼþµÄ¿ªÊ¼Ê±¼äºÍ³ÖÐøʱ¼ä£¬ÈçʵÑéµÈ¡£Êý¾Ý±»ÊÕ¼¯ÒÔºó£¬SQLÖÐÄÚÖõÄÕªÒªº¯Êý²»ÐèÒªÓëÔʼµ¥Î»Ãë½øÐÐÏ໥ת»»£¬¾Í¿ÉÒÔ±¨¸æ×ܵijÖÐøʱ¼äºÍƽ¾ù³ÖÐøʱ¼ä¡£
MORR ÓÚ 2006-10-17 00:47:18·¢±í:
¡¡¡¡ÁбíA
[code]CREATE TABLE experiment
(experiment_id NUMBER(9),
experiment_desc VARCHAR2(80),
experiment_start TIMESTAMP,
experiment_duration INTERVAL DAY(1) TO SECOND(4)
);
Table created.
INSERT INTO experiment
VALUES (
1, 'Busted urban myth', '01-JUN-2006 02:00:00 PM',
INTERVAL '1 2:31:15.1250' DAY(1) TO SECOND(4)
);
1 row created.
col experiment_desc format a40
col experiment_start format a30
col experiment_duration format a20
SELECT * FROM experiment;
EXPERIMENT_ID EXPERIMENT_DESC
EXPERIMENT_START EXPERIMENT_DURATION
1 Busted urban myth 01-JUN-06 02.00.00.000000 PM +1 02:31:15.1250
-- Now compute the experiment's ending time
SELECT experiment_id, experiment_start,
experiment_start + experiment_durationexperiment_end
FROM experiment;
EXPERIMENT_ID EXPERIMENT_START
EXPERIMENT_END
1 01-JUN-06 02.00.00.000000 PM 02-JUN-06 04.31.15.125000000 PM[/code]
¡¡¡¡µ«Òź¶µÄÊÇ£¬ TO_CHARº¯ÊýÖÐûÓаüÀ¨ÈκÎÄܹ»Ó³Éäµ½¸÷¸öʱ¼ä¼ä¸ôÊý¾ÝÀàÐÍƬ¶ÎµÄ¸ñʽģÐÍ¡£µ«ÊÇ£¬Äã¿ÉÒÔÓÃеÄEXTRACTº¯ÊýÀ´ÌáÈ¡ºÍºÏ²¢ÕâЩƬ¶Î¡£¸ñʽÈçÏ£º
[code]EXTRACT(timepart FROM interval_expression)[/code]
¡¡¡¡ÁбíB¸ø³öÁËÒ»¸öÔËÓÃÕâÖÖ·½·¨µÄÀý×Ó¡£
¡¡¡¡ÁбíB
[code]SELECT EXTRACT(DAY FROM experiment_duration) ||
' days, ' || EXTRACT (HOUR FROM experiment_duration) ||
' hours, ' || EXTRACT (MINUTE FROM experiment_duration) ||
' minutes' Duration
FROM experiment;
DURATION
1 days, 2 hours, 31 minutes[/code]
¡¡¡¡Ê×ÏÈ£¬´Óexperiment_durationÁÐÖн«ÌìÊýÌáÈ¡³öÀ´£¬ÎÄ×Ö¡°Days¡±ÊÇÓëÖ®ÏàÁªµÄ¡£¶ÔÓÚʵÑé³ÖÐøʱ¼äÖеÄСʱºÍ·ÖÖÓ²¿·Ö£¬²Ù×÷ÓëÉÏÊö·½·¨Ò»Ñù¡£