1. 程式人生 > >常用函式(日期函式)

常用函式(日期函式)

該篇總結MySQL 中常用的日期時間函式。

【1】DATE_FORMAT (datetime ,FormatCodes )

示例如下:

SELECT DATE_FORMAT(SYSDATE(),'%W'),
DATE_FORMAT(SYSDATE(),'%w'),
DATE_FORMAT(SYSDATE(),'%Y-%m-%d');

這裡寫圖片描述

【2】EXTRACT(unit FROM date):提取日期的指定部分

語法格式如下:

SELECT EXTRACT(unit FROM date)

示例如下:

SELECT 
EXTRACT(second FROM SYSDATE()),
EXTRACT(minute FROM SYSDATE()),
EXTRACT(hour FROM SYSDATE()),
EXTRACT(day FROM SYSDATE()),
EXTRACT(week FROM SYSDATE()),
EXTRACT(month FROM SYSDATE()),
EXTRACT(year FROM SYSDATE())

這裡寫圖片描述

【3】DAY

語法格式如下:

DAY(date) //返回日期的天;DAY() 和DAYOFMONTH()的意義相同。
DAYNAME (date) //英文星期
DAYOFWEEK (date) //一週中的第幾天,1為星期日,範圍1-7
DAYOFMONTH(date)//一月中的第幾天,一號為第一天,範圍1-31
DAYOFYEAR (date) //一年中的第幾天,範圍1-366

示例如下:

SELECT 
DAY(SYSDATE()),
DAYNAME(SYSDATE()),
DAYOFWEEK(SYSDATE()),
DAYOFMONTH(SYSDATE()),
DAYOFYEAR(SYSDATE());

這裡寫圖片描述

【4】week

語法格式如下:

WEEKWEEK(date[,mode])

該函式返回date 對應的星期數。WEEK() 的雙引數形式允許你指定該星期是否起始於週日或週一, 以及返回值的範圍是否為從0 到53 或從1 到53。若 mode引數被省略,則使用default_week_format系統自變數的值(不改變預設為0)。

這裡寫圖片描述

以下為mode的說明:

這裡寫圖片描述

WEEKDAY(date)
//返回date (0 = 週一, 1 = 週二, ... 6 = 週日)對應的工作日索引 


WEEKOFYEAR(date)
//將該日期的陽曆周以數字形式返回,範圍是從1到53。
//它是一個相容度函式,相當於WEEK(date,3)。

【5】year

語法格式如下:

YEAR(date) 

返回date 對應的年份,範圍是從1000到9999。

YEARWEEK(date), YEARWEEK(date,start) 

返回一個日期對應的年或周。start引數的工作同 start引數對 WEEK()的工作相同。結果中的年份可以和該年的第一週和最後一週對應的日期引數有所不同。

這裡寫圖片描述

注意,週數和WEEK()函式都可選引數0或 1。可能會返回的week有所不同,原因是此時 WEEK() 返回給定年份的語境中的周。

【6】CURRENT_X

語法格式如下:

CURRENT_DATE ( ) //當前日期
CURRENT_TIME ( ) //當前時間
CURRENT_TIMESTAMP ( ) //當前時間戳
NOW ( ) //當前時間

示例如下:

SELECT 
CURRENT_DATE(),
CURRENT_TIME(),
CURRENT_TIMESTAMP(),
NOW();

這裡寫圖片描述

【7】日期加減

① 求差:date1-date2(只算日期,不算時間)

DATEDIFF (date1 ,date2 ) //兩個日期差

示例如下 :

SELECT DATEDIFF(SYSDATE(),'2017-08-04') ;

這裡寫圖片描述

TIMEDIFF(datetime1,datetime2) : 兩個日期時間型相減:

SELECT TIMEDIFF(SYSDATE(),'2017-08-07 20:20:20'),TIMEDIFF('2017-08-07 20:20:20',SYSDATE());

這裡寫圖片描述

② DATE_ADD(date2 , INTERVAL d_value d_type )

在date2中加上日期或時間

SELECT DATE_ADD(SYSDATE(),INTERVAL 3 HOUR)

type:可為second,minute,hour,day,week,month and year;

同ADDDATE(date,INTERVAL expr type)。

③ DATE_SUB (date2 , INTERVAL d_value d_type )

在date2上減去一個時間

SELECT DATE_SUB(SYSDATE(),INTERVAL 3 hour);

其他同②。

同SUBDATE(date,INTERVAL expr type)。

【8】根據日期判斷秒,分,時,天,周,月,年

語法格式如下:

SECOND(datetime)//返回datetime的秒;
MINUTE(datetime)//返回datetime的分鐘;
HOUR(datetime )//返回datetime的小時;
DAY (date) //返回日期的天;
WEEK (datetime [,start_of_week ]) //第幾周
MONTH(datetime)//月份
YEAR(datetime)//年份
DATE (datetime ) //返回datetime的日期部分;

示例如下 :

SELECT 
SECOND(SYSDATE()), 
MINUTE(SYSDATE()),
HOUR(SYSDATE()),
DAY(SYSDATE()),
WEEK(SYSDATE()),
MONTH(SYSDATE()),
YEAR(SYSDATE())
DATE(SYSDATE());

這裡寫圖片描述

【9】時間相加減

① 時間相加

將time_interval加到date2

ADDTIME (date2 ,time_interval ) 

示例如下 :

SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');

這裡寫圖片描述

② 時間相減

SELECT SUBTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');

這裡寫圖片描述

【10】秒數,時間轉換

① 秒數轉時間

SEC_TO_TIME (seconds )

這裡寫圖片描述

② 時間轉秒數

TIME_TO_SEC(time)

這裡寫圖片描述

【11】datetime的微秒部分

MICROSECOND(datetime) //微秒

這裡寫圖片描述

【12】datetime的月的最後日期

即,隸屬的月的最後一天是幾號。

LAST_DAY(date) //date的月的最後日期

這裡寫圖片描述

【13】month

語法格式如下:

MONTH(date)
//返回date 對應的月份,範圍時從 1 到 12。

MONTHNAME(date)

//返回date 對應月份的全名。

這裡寫圖片描述

【14】日期時間串拼接

語法格式如下:

MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時間串

示例如下 :

SELECT MAKEDATE(2017,1),MAKETIME (20,20 ,20); 

這裡寫圖片描述

【15】JavaScript中中的Date物件

用法如下所示:

var myDate=new Date();
myDate.getYear(); //獲取當前年份(2位)
myDate.getFullYear(); //獲取完整的年份(4位,1970-????)
myDate.getMonth(); //獲取當前月份(0-11,0代表1月)
myDate.getDate(); //獲取當前日(1-31)
myDate.getDay(); //獲取當前星期X(0-6,0代表星期天)
myDate.getTime(); //獲取當前時間(從1970.1.1開始的毫秒數)
myDate.getHours(); //獲取當前小時數(0-23)
myDate.getMinutes(); //獲取當前分鐘數(0-59)
myDate.getSeconds(); //獲取當前秒數(0-59)
myDate.getMilliseconds(); //獲取當前毫秒數(0-999)
myDate.toLocaleDateString(); //獲取當前日期
var mytime=myDate.toLocaleTimeString(); //獲取當前時間
myDate.toLocaleString( ); //獲取日期與時間