MySQL的時間函數

來源:互聯網
上載者:User

CURDATE()或者CURRENT_DATE()

返回當前日期,按照“YYYY-MM-DD”或者“YYYYMMDD“格式顯示。只包含年月日

select curdate()+0;

顯示結果為:20140214

select curdate()+1;

顯示結果為:20140215

CURTIME()或者CURRENT_TIME()
返回目前時間,包括時分秒

NOW()
返回目前時間,包含日期和時間

UTC_DATE函數
返回UTC時間,北京時間=UTC時間+8小時

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若無參數調用,則返回一個Unix timestamp ('1970-01-01 00:00:00' GMT 之後的秒數) 作為不帶正負號的整數。若用date 來調用UNIX_TIMESTAMP(),它會將參數值以'1970-01-01 00:00:00' GMT後的秒數的形式返回。date 可以是一個DATE 字串、一個 DATETIME字串、一個 TIMESTAMP或一個當地時間的YYMMDD 或YYYMMDD格式的數字。

mysql> SELECT UNIX_TIMESTAMP(); 
        -> 882226357 
 
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); 
        -> 875996580 

FROM_UNIXTIME()
返回unix時間戳記的日期值。

mysql>SELECT FROM_UNIXTIME(875996580);
    ->'1997-10-04 22:23:00'

TO_DAYS(date)
給定一個日期date, 返回一個天數 (從年份0開始的天數 )。

mysql> SELECT TO_DAYS(950501); 
        -> 728779 
 
mysql> SELECT TO_DAYS('1997-10-07'); 
        -> 729669 

DATEDIFF函數
datediff(date1,date2)用來計算兩個日期之間相差的天數。

DATE_ADD函數或者ADDDATE函數
date_add(date,interval expr type):返回與所給日期date相差interval時間段的日期。

mysql>select date_add(curdate(), interval 1 day) 
    >2014-02-15 
mysql>select date_add(curdate(), interval -1 day) 
    >2014-02-13 

DATE_SUB函數或者SUBDATE函數
date_sub(date,interval expr type):返回比所給日期早expr type的日期。

mysql>select date_sub(curdate(), interval 1 day) 
    >2014-02-13 
mysql>select date_add(curdate(), interval -1 day) 
    >2014-02-15 

MySQL 允許任何expr 格式中的標點分隔字元。表中所顯示的是建議的 分隔字元。若 date 參數是一個 DATE 值,而你的計算只會包括 YEAR、MONTH和DAY部分(即, 沒有時間部分), 其結果是一個DATE 值。否則,結果將是一個 DATETIME值。
若位於另一端的運算式是一個日期或日期時間值 , 則INTERVAL expr type只允許在 + 操作符的兩端。對於 –操作符, INTERVAL expr type 只允許在其右端,原因是從一個時間間隔中提取一個日期或日期時間值是毫無意義的。 (見下面的例子)。

mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;
        -> '1998-01-01 00:00:00'
mysql> SELECT INTERVAL 1 DAY + '1997-12-31';
        -> '1998-01-01'
mysql> SELECT '1998-01-01' - INTERVAL 1 SECOND;
        -> '1997-12-31 23:59:59'

EXTRACT() 函數用於返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。

EXTRACT(unit FROM date)date 參數是合法的日期運算式。unit 參數可以是下列的值:

Unit 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

DATE_FORMAT(date,format)
根據format字串格式化date值
(在format字串中可用標誌符:
 %M 月名字(January……December)
 %W 星期名字(Sunday……Saturday)
 %D 有英語首碼的月份的日期(1st, 2nd, 3rd, 等等。)
 %Y 年, 數字, 4 位
 %y 年, 數字, 2 位
 %a 縮寫的星期名字(Sun……Sat)
 %d 月份中的天數, 數字(00……31)
 %e 月份中的天數, 數字(0……31)
 %m 月, 數字(01……12)
 %c 月, 數字(1……12)
 %b 縮寫的月份名字(Jan……Dec)
 %j 一年中的天數(001……366)
 %H 小時(00……23)
 %k 小時(0……23)
 %h 小時(01……12)
 %I 小時(01……12)
 %l 小時(1……12)
 %i 分鐘, 數字(00……59)
 %r 時間,12 小時(hh:mm:ss [AP]M)
 %T 時間,24 小時(hh:mm:ss)
 %S 秒(00……59)
 %s 秒(00……59)
 %p AM或PM
 %w 一個星期中的天數(0=Sunday ……6=Saturday )
 %U 星期(0……52), 這裡星期天是星期的第一天
 %u 星期(0……52), 這裡星期一是星期的第一天
 %% 字元% )

mysql> select DATE_FORMAT('1997-10-04 22:23:00','%W %M %Y');
  -> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%H:%i:%s');
  -> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');
  -> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');
  -> '22 22 10 10:23:00 PM 22:23:00 00 6'

LAST_DAY()
擷取一個日期或者日期時間值,返回該月的最後一天。

>SELECT LAST_DAY('2013-02-14');
>'2013-02-28'

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.