資源描述:
《mysql那些與日期和時(shí)間相關(guān)的函數(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、MySQL那些與日期和時(shí)間相關(guān)的函數(shù)2012年09月24日00:05it168網(wǎng)站原創(chuàng)作者:姜承堯編輯:王玉圓評(píng)論:0條 【IT168技術(shù)】日期函數(shù)可能是比較常使用的一種函數(shù)。下面介紹一些最為常用的日期函數(shù)及一些容易忽略的問題?! ?.NOW、CURRENT_TIMESTAMP和SYSDATE 這些函數(shù)都能返回當(dāng)前的系統(tǒng)時(shí)間,它們之間有區(qū)別嗎?先來看個(gè)例子。mysql>SELECTNOW(),CURRENT_TIMESTAMP(),SYSDATE()G;***************************1.row***************************
2、????????????NOW():2011-02-0420:35:04CURRENT_TIMESTAMP():2011-02-0420:35:04????????SYSDATE():2011-02-0420:35:04 從上面的例子看來,3個(gè)函數(shù)都是返回當(dāng)前的系統(tǒng)時(shí)間,再來看下面這個(gè)例子:mysql>SELECT??->????NOW(),??->????CURRENT_TIMESTAMP(),??->????SYSDATE(),??->????SLEEP(2),??->????NOW(),??->????CURRENT_TIMESTAMP(),??->????SYSDA
3、TE()G***************************1.row***************************????????????NOW():2011-11-2921:04:49CURRENT_TIMESTAMP():2011-11-2921:04:49????????SYSDATE():2011-11-2921:04:49????????SLEEP(2):0??????????NOW():2011-11-2921:04:49CURRENT_TIMESTAMP():2011-11-2921:04:49????????SYSDATE():2011-11-
4、2921:04:511rowinset(2.00sec) 在上面這個(gè)例子中人為地加入了SLEEP函數(shù),讓其等待2秒,這時(shí)可以發(fā)現(xiàn)SYSDATE返回的時(shí)間和NOW及CURRENT_TIMESTAMP是不同的,SYSDATE函數(shù)慢了2秒。究其原因是這3個(gè)函數(shù)有略微區(qū)別: CURRENT_TIMESTAMP是NOW的同義詞,也就是說兩者是相同的?! YSDATE函數(shù)返回的是執(zhí)行到當(dāng)前函數(shù)時(shí)的時(shí)間,而NOW返回的是執(zhí)行SQL語句時(shí)的時(shí)間。 因此在上面的例子中,兩次執(zhí)行SYSDATE函數(shù)返回不同的時(shí)間是因?yàn)榈诙握{(diào)用執(zhí)行該函數(shù)時(shí)等待了前面SLEEP函數(shù)2秒。而對(duì)于NOW函數(shù),不
5、管是在SLEEP函數(shù)之前還是之后執(zhí)行,返回的都是執(zhí)行這條SQL語句時(shí)的時(shí)間?! ?.時(shí)間加減函數(shù) 先來看一個(gè)例子。mysql>SELECTNOW(),NOW()+0G;***************************1.row***************************??NOW():2011-02-0420:46:33NOW()+0:20110204204633.0000001rowinset(0.00sec) 可以看到,NOW()函數(shù)可以返回時(shí)間,也可以返回一個(gè)數(shù)字,就看用戶如何使用。如果相對(duì)當(dāng)前時(shí)間進(jìn)行增加或減少,并不能直接加上或減去一個(gè)數(shù)字,而需
6、要使用特定的函數(shù),如DATE_ADD或DATE_SUB,前者表示增加,后者表示減少。其具體的使用方法有DATE_ADD(date,INTERVALexprunit)和DATE_SUB(date,INTERVALexprunit),示例如下:mysql>SELECTNOW()ASnow,??????DATE_ADD(now(),INTERVAL1DAY)AStomorrow,??????DATE_SUB(now(),INTERVAL1DAY)ASyesterdayG;***************************1.row***********************
7、****????now:2011-02-0420:53:25tomorrow:2011-02-0520:53:25yesterday:2011-02-0320:53:251rowinset(0.00sec) 其中expr值可以是正值也可以是負(fù)值,因此可以使用DATE_ADD函數(shù)來完成DATE_SUB函數(shù)的工作,例如:mysql>SELECTNOW()ASnow,??????DATE_ADD(NOW(),INTERVAL1DAY)AStomorrow,??????DATE_ADD(NOW(),INTER