国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

MySQL日期和時間函數講授

來源:懂視網 責編:小采 時間:2020-11-09 14:02:26
文檔

MySQL日期和時間函數講授

MySQL日期和時間函數講授:MySQL日期和時間函數講解 1. NOW、CURRENT_TIMESTAMP和SYSDATE 這些函數都能返回當前的系統時間,它們之間有區別嗎先來看個例子。 mysqlSELECTNOW(),CURRENT_TIMESTAMP(),SYSDATE()\G; **************************
推薦度:
導讀MySQL日期和時間函數講授:MySQL日期和時間函數講解 1. NOW、CURRENT_TIMESTAMP和SYSDATE 這些函數都能返回當前的系統時間,它們之間有區別嗎先來看個例子。 mysqlSELECTNOW(),CURRENT_TIMESTAMP(),SYSDATE()\G; **************************

MySQL日期和時間函數講解 1. NOW、CURRENT_TIMESTAMP和SYSDATE 這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。 mysql?SELECT?NOW(),CURRENT_TIMESTAMP(),SYSDATE()\G; ***************************?1. row?*************************** NO

MySQL日期和時間函數講解

1. NOW、CURRENT_TIMESTAMP和SYSDATE

這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。

mysql>?SELECT?NOW(),CURRENT_TIMESTAMP(),SYSDATE()\G;
***************************?1. row?***************************
NOW():?2011-02-04?20:35:04
CURRENT_TIMESTAMP():?2011-02-04?20:35:04
SYSDATE():?2011-02-04?20:35:04

從上面的例子看來,3個函數都是返回當前的系統時間,再來看下面這個例子:

mysql>SELECT
->?????NOW(),
->???? CURRENT_TIMESTAMP(),
->???? SYSDATE(),
->???? SLEEP(2),
->?????NOW(),
->???? CURRENT_TIMESTAMP(),
->???? SYSDATE()\G
***************************?1. row?***************************
NOW():?2011-11-29?21:04:49
CURRENT_TIMESTAMP():?2011-11-29?21:04:49
SYSDATE():?2011-11-29?21:04:49
SLEEP(2):?0
NOW():?2011-11-29?21:04:49
CURRENT_TIMESTAMP():?2011-11-29?21:04:49
SYSDATE():?2011-11-29?21:04:51
1?row in?set?(2.00?sec)

在上面這個例子中人為地加入了SLEEP函數,讓其等待2秒,這時可以發現SYSDATE返回的時間和NOW及CURRENT_TIMESTAMP是不同的,SYSDATE函數慢了2秒。究其原因是這3個函數有略微區別:

CURRENT_TIMESTAMP是NOW的同義詞,也就是說兩者是相同的。

SYSDATE函數返回的是執行到當前函數時的時間,而NOW返回的是執行SQL語句時的時間。

因此在上面的例子中,兩次執行SYSDATE函數返回不同的時間是因為第二次調用執行該函數時等待了前面SLEEP函數2秒。而對于NOW函數,不管是在SLEEP函數之前還是之后執行,返回的都是執行這條SQL語句時的時間。

2.時間加減函數

先來看一個例子。

mysql>?SELECT?NOW(),NOW()+0\G;
***************************?1. row?***************************
NOW():?2011-02-04?20:46:33
NOW()+0:?20110204204633.000000
1?row in?set?(0.00?sec)

可以看到,NOW()函數可以返回時間,也可以返回一個數字,就看用戶如何使用。如果相對當前時間進行增加或減少,并不能直接加上或減去一個數字,而需要使用特定的函數,如DATE_ADD或DATE_SUB,前者表示增加,后者表示減少。其具體的使用方法有DATE_ADD(date,INTERVAL expr unit)和 DATE_SUB(date,INTERVAL expr unit),示例如下:

mysql>?SELECT?NOW()?AS?now,
DATE_ADD(now(),INTERVAL?1?DAY)?AS?tomorrow,
DATE_SUB(now(),INTERVAL?1?DAY)?AS?yesterday\G;
***************************?1. row?***************************
now:?2011-02-04?20:53:25
tomorrow:?2011-02-05?20:53:25
yesterday:?2011-02-03?20:53:25
1?row in?set?(0.00?sec)

其中expr值可以是正值也可以是負值,因此可以使用DATE_ADD函數來完成DATE_SUB函數的工作,例如:

mysql>?SELECT?NOW()?AS?now,
DATE_ADD(NOW(),INTERVAL?1?DAY)?AS?tomorrow,
DATE_ADD(NOW(),INTERVAL?-1?DAY)?AS?yesterday\G;
***************************?1. row?***************************
now:?2011-02-04?20:55:40
tomorrow:?2011-02-05?20:55:40
yesterday:?2011-02-03?20:55:40
1?row in?set?(0.00?sec)

還有一個問題,如果是閏月,那么DATE_ADD函數怎么處理呢?MySQL的默認行為是這樣的:如果目標年份是閏月,那么返回的日期為2月29日;如果不是閏月,那么返回日期是2月28日。示例如下:

mysql>?SELECT?DATE_ADD(’2000-2-29′,INTERVAL 4 YEAR) AS year;
+————+
|?year????????|
+————+
|?2004-02-29?|
+————+
1?row in?set?(0.00?sec)

?

mysql>?SELECT?DATE_ADD(’2000-2-29′,INTERVAL 1 YEAR) AS year;
+————+
|?year????????|
+————+
|?2001-02-28?|
+————+
1?row in?set?(0.00?sec)

在上面的例子中使用了DAY和YEAR數據類型,其實也可以使用MICROSECOND、SECOND、MINUTE、HOUR、WEEK、MONTH等類型,例如:

mysql>?SELECT?NOW()?AS?now,
DATE_ADD(NOW(), INTERVAL?1?HOUR)?AS?next?time\G;
***************************?1. row?***************************
now:?2011-02-04?21:00:15
next?time:?2011-02-04?22:00:15
1?row in?set?(0.00?sec)

 3. DATE_FORMAT函數

這個函數本身沒有什么需要探討的地方,其作用只是按照用戶的需求格式化打印出日期,例如:

mysql>?SELECT?DATE_FORMAT(NOW(),’%Y%m%d’) AS datetime;
+———-+
| datetime |
+———-+
|?20110204?|
+———-+
1?row in?set?(0.00?sec)

但是開發人員往往會錯誤地使用這個函數,導致非常嚴重的后果。例如在需要查詢某一天的數據時,有些開發人員會寫如下的語句:

SELECT * FROM table WHERE DATE_FORMAT(date,’%Y%m%d’)=’xxxx-xx-xx’;

一般來說表中都會有一個對日期類型的索引,如果使用上述的語句,優化器絕對不會使用索引,也不可能通過索引來查詢數據,因此上述查詢的執行效率可能非常低。

1 樓 hunan84229247 2013-10-08

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

MySQL日期和時間函數講授

MySQL日期和時間函數講授:MySQL日期和時間函數講解 1. NOW、CURRENT_TIMESTAMP和SYSDATE 這些函數都能返回當前的系統時間,它們之間有區別嗎先來看個例子。 mysqlSELECTNOW(),CURRENT_TIMESTAMP(),SYSDATE()\G; **************************
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 卡通动漫亚洲 | 午夜视频免费在线观看 | 欧美日韩在线精品一区二区三区 | 国产毛片一级 | 啪啪亚洲| 永久在线观看 | 日韩欧美色| 亚洲欧美在线视频观看 | 亚洲精品国产第七页在线 | 图片专区亚洲 欧美 另类 | www.亚洲欧美 | 亚洲一区二区三区高清 不卡 | 一级a毛片免费观看久久精品 | 日韩资源| 美日韩免费视频 | 精品1区2区3区 | 精品久久久一二三区 | 欧美色图亚洲天堂 | 国产偷亚洲偷欧美偷精品 | 福利片一区二区 | 亚洲欧美日韩精品高清 | 欧美精品亚洲人成在线观看 | 国产成人综合一区精品 | 亚洲区欧美 | 国产l精品国产亚洲区在线观看 | 911久久| 久久久久国产成人精品亚洲午夜 | 亚洲视频一区二区三区 | 97久久精品一区二区三区 | 在线国产高清 | 亚洲欧美另类色图 | 看全色黄大色大片免费久久久 | 国产中文字幕在线视频 | 国产一区在线播放 | 欧美高清不卡 | 亚洲欧洲一二三区 | 日韩欧美亚洲一区 | 日韩欧美第一页 | 欧美激情一区二区三区视频 | 国产一区在线观看视频 | 日本a级精品一区二区三区 日本不卡视频一区二区三区 |