程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫的日期函數與時間函數

MySQL數據庫的日期函數與時間函數

編輯:MySQL綜合教程

以下的文章主要講述的是MySQL數據庫的日期函數與時間函數MySQL 5.X)的實際應用的經驗總結,MySQL日期函數與時間函數在實際應用中出現的頻率還是很大的,以下的文章就是對這兩個函數的詳細描述。

MySQL 數據庫獲得當前日期時間 函數:

1.1 獲得當前日期+時間date + time)函數:now()

  1. mysql> select now();  
  2. +---------------------+  
  3. | now() |  
  4. +---------------------+  
  5. | 2008-08-08 22:20:46 |  
  6. +---------------------+  

除了 now() 函數能獲得當前的日期時間外,MySQL 中還有下面的函數:

  1. current_timestamp()  
  2. ,current_timestamp  
  3. ,localtime()  
  4. ,localtime  
  5. ,localtimestamp -- (v4.0.6)  
  6. ,localtimestamp() -- (v4.0.6) 

這些日期時間函數,都等同於 now()。鑒於 now() 函數簡短易記,建議總是使用 now() 來替代上面列出的函數。

1.2 獲得當前日期+時間date + time)函數:sysdate()

sysdate() 日期時間函數跟 now() 類似,不同之處在於:now() 在執行開始時值就得到了, sysdate() 在函數執行時動態得到值。看下面的例子就明白了:

  1. mysql> select now(), sleep(3), now();  
  2. +---------------------+----------+---------------------+  
  3. | now() | sleep(3) | now() |  
  4. +---------------------+----------+---------------------+  
  5. | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |  
  6. +---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();  
  7. +---------------------+----------+---------------------+  
  8. | sysdate() | sleep(3) | sysdate() |  
  9. +---------------------+----------+---------------------+  
  10. | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |  
  11. +---------------------+----------+---------------------+  

可以看到,雖然 中途 sleep 3 秒,但 now() 函數兩次的時間值是相同的; sysdate() 函數兩次得到的時間值相差 3 秒。MySQL 數據庫Manual 中是這樣描述 sysdate() 的:Return the time at which the function executes。

sysdate() 日期時間函數,一般情況下很少用到。

2. 獲得當前日期date)函數:curdate()

  1. mysql> select curdate();  
  2. +------------+  
  3. | curdate() |  
  4. +------------+  
  5. | 2008-08-08 |  
  6. +------------+  

其中,下面的兩個日期函數等同於 curdate():

current_date()
,current_date3. 獲得當前時間time)函數:curtime()

  1. mysql> select curtime();  
  2. +-----------+  
  3. | curtime() |  
  4. +-----------+  
  5. | 22:41:30 |  

+-----------+其中,下面的兩個時間函數等同於 curtime():

current_time()

,current_time4. 獲得當前 UTC 日期時間函數:

  1. utc_date(), utc_time(), utc_timestamp()  
  2. mysql> select utc_timestamp(), utc_date(), utc_time(), now()  
  3. +---------------------+------------+------------+---------------------+  
  4. | utc_timestamp() | utc_date() | utc_time() | now() |  
  5. +---------------------+------------+------------+---------------------+  
  6. | 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |  
  7. +---------------------+------------+------------+---------------------+  

因 為我國位於東八時區,所以本地時間 = UTC 時間 + 8 小時。UTC 時間在業務涉及多個國家和地區的時候,非常有用。

二、MySQL數據庫 日期時間 Extract選取) 函數。

1. 選取日期時間的各個部分:日期、時間、年、季度、月、日、小時、分鐘、秒、微秒

  1. set @dt = '2008-09-10 07:15:30.123456';  
  2. select date(@dt); -- 2008-09-10  
  3. select time(@dt); -- 07:15:30.123456  
  4. select year(@dt); -- 2008  
  5. select quarter(@dt); -- 3  
  6. select month(@dt); -- 9  
  7. select week(@dt); -- 36  
  8. select day(@dt); -- 10  
  9. select hour(@dt); -- 7  
  10. select minute(@dt); -- 15  
  11. select second(@dt); -- 30  
  12. select microsecond(@dt);  

1234562. MySQL Extract() 函數,可以上面實現類似的功能:

  1. set @dt = '2008-09-10 07:15:30.123456';  
  2.  
  3. select extract(year from @dt); -- 2008  
  4. select extract(quarter from @dt); -- 3  
  5. select extract(month from @dt); -- 9  
  6. select extract(week from @dt); -- 36  
  7. select extract(day from @dt); -- 10  
  8. select extract(hour from @dt); -- 7  
  9. select extract(minute from @dt); -- 15  
  10. select extract(second from @dt); -- 30  
  11. select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809  
  12. select extract(day_hour from @dt); -- 1007  
  13. select extract(day_minute from @dt); -- 100715  
  14. select extract(day_second from @dt); -- 10071530  
  15. select extract(day_microsecond from @dt); -- 10071530123456  
  16. select extract(hour_minute from @dt); -- 715  
  17. select extract(hour_second from @dt); -- 71530  
  18. select extract(hour_microsecond from @dt); -- 71530123456  
  19. select extract(minute_second from @dt); -- 1530  
  20. select extract(minute_microsecond from @dt); -- 1530123456  
  21. select extract(second_microsecond from @dt);  

30123456MySQL Extract() 函數除了沒有date(),time() 的功能外,其他功能一應具全。並且還具有選取‘day_microsecond’ 等功能。注意這裡不是只選取 day 和 microsecond,而是從日期的 day 部分一直選取到 microsecond 部分。夠強悍的吧!

以上的相關內容就是對MySQL數據庫的日期函數、時間函數MySQL 5.X)的部分內容介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved