µ±Ç°Î»ÖãºÊ×Ò³ > SQL SERVERº¯Êý´óÈ«
Êý¾ÝÀàÐÍ time date 12:35:29. 1234567 2007-05-08 Êä³ö smalldatetime 2007-05-08 12:35:00 datetime datetime2 2007-05-08 12:35:29.123 2007-05-08 12:35:29. 1234567 datetimeoffset 2007-05-08 12:35:29.1234567 +12:15
DATEADD()º¯Êý
DATEADD()º¯ÊýÓÃÓÚÔÚÈÕÆÚ/ʱ¼äÖµÉϼÓÉÏÈÕÆÚµ¥Î»¼ä¸ô¡£±ÈÈ磬ҪµÃµ½2007Äê4ÔÂ29ÈÕÆð90ÌìºóµÄÈÕÆÚ£¬¿ÉÒÔʹÓÃÏÂÁÐÓï¾ä£º
SELECT DATEADD(DAY, 90, '4-29-2007') ½á¹û£º2007-07-28 00:00:00.000
¿ÉÒÔ°ÑϱíµÄÖµ×÷Ϊʱ¼ä¼ä¸ô²ÎÊý´«µÝ¸øDATEADD()º¯Êý¡£
datepart year quarter month dayofyear day week weekday hour yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw, w hh Ëõд minute second millisecond microsecond nanosecond
mi, n ss, s ms mcs ns ÔÚÏÂÃæÁгöµÄÀý×ÓÖУ¬ÎÒÃÇʹÓúÍÉÏÒ»¸öÀý×ÓÒ»ÑùµÄÈÕÆÚ£¬²¢ÇÒÔÚÕâЩÀý×ÓÖл¹°üº¬ÁËʱ¼äÊý¾Ý¡£Ã¿¸ö²Ù×÷µÄ½á¹û½«ÏÔʾÔÚ²éѯµÄÏÂÒ»ÐÐÖС£
18Äêºó£º
SELECT DATEADD(YEAR, 18, '4-29-1988 10:30 AM') 2006-04-29 10:30:00.000 18Äêǰ£º
SELECT DATEADD(YY, -18, '4-29-1988 10:30 AM') 1970-04-29 10:30:00.000 9000Ãëºó£º
SELECT DATEADD(SECOND, 9000, '4-29-1988 10:30 AM') 1988-04-29 13:00:00.000 9000000ºÁÃëǰ:
SELECT DATEADD(MS, -9000000, '4-29-1988 10:30 AM') 1988-04-29 08:00:00.000
¿ÉÒÔ½«CONVERT()º¯ÊýºÍDATEADD()º¯Êý×éºÏÔÚÒ»Æð£¬À´¶Ô1989Äê9ÔÂ8ÈÕ9¸öÔÂǰµÄÈÕÆÚÖµ½øÐиñʽ»¯¡£
SELECT CONVERT(varchar(20), DATEADD(M, -9, '9-8-1989'), 101) 12/08/1988
Õ⽫·µ»ØÒ»¸ö¿É±ä³¤¶ÈµÄ×Ö·ûÖµ£¬±ÈÇ°ÃæÀý×Ó½á¹ûÖеÄĬÈÏÈÕÆÚ¸üÒ×ÈÝÒ×Àí½â¡£ÕâÊÇÒ»¸öº¯ÊýǶÌ×µ÷Óã¬DATEADD()º¯ÊýµÄ·µ»ØÖµ(Ò»¸öDateTimeÀàÐ͵ÄÖµ)±»×÷Ϊֵ²ÎÊý´«µÝ¸øCONVERT()º¯Êý¡£ DATEDIFF()º¯Êý
DATEADD()ºÍDATEDIFF()º¯Êý¿ÉÒÔ¿´×÷Ò»¶Ô±íÐֵܣ¬ÓеãÏñ³Ë·¨Óë³ý·¨¡£ÔÚµÈʽµÄÁ½¶ËÓÐ4¸öÔªËØ£ºÆðʼÈÕÆÚ¡¢Ê±¼ä¼ä¸ô(datepart)¡¢²îÖµºÍ×îÖÕÈÕÆÚ¡£Èç¹ûÒÑÖªÆäÖеÄÈý¸öÖµ£¬
¾Í¿ÉÒÔÇó³öµÚ4¸öÖµ¡£Èç¹ûÔÚDATEADD()º¯ÊýÖÐʹÓÃÆðʼÈÕÆÚ¡¢Ò»¸öÕûÐÍÖµºÍÒ»¸öʱ¼ä¼ä¸ô£¬¾Í¿É·µ»ØÓëÆðʼÈÕÆÚÏà¹ØµÄ×îÖÕÈÕÆÚÖµ¡£Èç¹ûÌṩÁËÆðʼÈÕÆÚ¡¢Ê±¼ä¼ä¸ôºÍ×îÖÕÈÕÆÚ£¬DATEDIFF()º¯Êý¾Í¿ÉÒÔ·µ»Ø²îÖµ¡£
ΪÁË˵Ã÷ÕâÒ»µã£¬ÎÒÃÇÑ¡ÔñÈÎÒâÁ½¸öÈÕÆÚÓëÒ»¸öʱ¼ä¼ä¸ô×÷Ϊ²ÎÊý¡£Õâ¸öº¯Êý½«ÒÔËùÌṩµÄʱ¼ä¼ä¸ôΪµ¥Î»·µ»ØÁ½¸öÈÕÆÚÖ®¼äµÄ²îÖµ¡£ÒªÖªµÀ1989Äê9ÔÂ8ÈÕºÍ1991Äê10ÔÂ17ÈÕÖ®¼ä²îÁ˼¸¸öÔ£¬¿É±àдÈçϲéѯ´úÂ룺
SELECT DATEDIFF(MONTH, '9-8-1989', '10-17-1991') ½á¹ûÊÇ25¸öÔ¡£Èç¹ûÒÔÈÕÆÚΪµ¥Î»ÄØ?
SELECT DATEDIFF(DAY, '9-8-1989', '10-17-1991') ½á¹ûÊÇ769Ìì¡£
1996Äê7ÔÂ2ÈÕºÍ1997Äê8ÔÂ4ÈÕÖ®¼ä²î¼¸¸öÐÇÆÚ? SELECT DATEDIFF(WEEK, '7-2-1996', '8-4-1997') 57ÐÇÆÚ¡£ÉõÖÁ¿ÉÒÔËã³ö×Ô¼ºµÄÄêÁäÊǶàÉÙÃ룺 DECLARE @MyBirthDate datetime SET @MyBirthDate = '7-16-1962' SELECT DATEDIFF(SS, @MyBirthDate, GETDATE())
½á¹ûÏÔʾÓÐЩÈËÒѾ»îÁË15ÒÚÃëÁË!
¿ÉÒÔ½«ÁÐÃû×÷Ϊ²ÎÊý£¬°ÑÕâ¸öº¯ÊýÓÃÔÚ²éѯÖС£Ê×ÏȽ¨Á¢Ò»¸ö¼òµ¥µÄ±í£¬ÆäÖаüº¬Ò»Ð©È˵ÄÐÕÃûºÍÉúÈÕ£º SELECT c.FirstName ,c.LastName ,e.BirthDate ,DATEDIFF(YEAR, e.BirthDate, GETDATE()) AS ApproximateAge FROM HumanResources.Employee as e inner join Person.Contact as c on e.ContactID = c.ContactID order by c.LastName
ÏÂͼÏÔʾÁ˽á¹û£º
³õ¿´ÆðÀ´½á¹ûÊǶԵ쬵«´æÔÚµÄÎÊÌâÊÇÄêÁäֵûÓо«È·µ½ÈÕ¡£±ÈÈ磬¸ù¾Ý±íÖеÄÊý¾Ý£¬NancyµÄÉúÈÕÊÇ12ÔÂ21ÈÕ£¬Ëû½ñÄ꽫Çì×£µÚ32¸öÉúÈÕ(Õâ¸ö²éѯÔÚ2010Äê8ÔÂÔËÐÐ)¡£Èç¹ûÒÀ¾ÝÉÏÊö¼ÆËã½á¹ûÀ´È·¶¨ËûµÄÄêÁäºÎʱ±ä»¯£¬¾ÍÓ¦ÔÚÒ»Ô·ݵÄijÌì¸øËû·¢ÉúÈÕ¿¨Æ¬£¬Õâ±Èʵ¼ÊÈÕÆÚÌáǰÁË11¸öÔ¡£
³ý·ÇÓøüСµÄʱ¼äµ¥Î»À´¼ÆËãÕâЩÈÕÆÚµÄ²î£¬·ñÔò½á¹ûÖ»ÔÚ¹ÍԱʵ¼ÊÉúÈÕµÄÒ»ÄêÒÔÄÚÊǾ«È·µÄ¡£ÒÔÏÂÀý×Ó½«ÓòîÖµ³ýÒÔÒ»Äê(°üÀ¨ÈòÄê)µÄÌìÊý£¬²¢½«½á¹ûֵת»»ÎªintÀàÐÍ£¬½øÐÐÈ¡ÕûÔËË㣬¶ø²»ÊÇËÄÉáÎåÈë¡£ SELECT c.FirstName ,c.LastName ,e.BirthDate ,DATEDIFF(YEAR, e.BirthDate, GETDATE()) AS ApproximateAge ,CONVERT(int, DATEDIFF(DAY, e.BirthDate, GETDATE())/365) AS Age FROM HumanResources.Employee as e inner join Person.Contact as c on e.ContactID = c.ContactID order by c.LastName
±È½ÏÕâ´ÎµÄ½á¹ûºÍÉÏÒ»¸öÀý×ӵĽá¹û£¬¿´¿´ÓÐʲô²»Í¬¡£
¿ÉÒÔ¿´µ½£¬NancyÊÇ31Ë꣬ÆäËû¹ÍÔ±µÄÄêÁäÒ²¾«È·µ½ÁËÌì¡£±íÖеÄBirthDateÁд洢¹ÍÔ±µÄÉúÈÕ£¬²¢ÒÔÎçÒ¹(00:00:00AM)Ϊ½ç£¬ÕâÊÇÒ»ÌìÖеĵÚÒ»Ãë¡£GETDATE()º¯Êý·µ»Øµ±Ç°µÄʱ¼äÓëÈÕÆÚ¡£µ±Ç°Á½¸öÈÕÆÚÏà²îÔ¼8Сʱ(дÕâ¶ÎÎÄ×ÖʱÊÇÉÏÎç8µã)¡£Èç¹ûÏ£ÍûÕâ¸ö¼ÆËã¸ü¾«È·£¬¾ÍÐèÒªÔÚµ±Ç°ÈÕÆÚµÄÎçÒ¹°ÑGETDATE()º¯ÊýµÄ½á¹ûת»»ÎªdatetimeÀàÐÍ¡£
¹²·ÖÏí92ƪÏà¹ØÎĵµ