MySQL的日期和時間處理函數


常用的日期和時間處理函數

函數 說明
adddate() 增加一個日期
addtime() 增加一個時間
curdate() 返回當前日期
curtime() 返回當前時間
date() 返回日期時間的日期部分
datediff() 計算兩個日期之差
date_add() 高度靈活的日期計算函數
date_format() 返回一個格式化的日期和時間串
day() 返回一個日期的天數部分
dayofweek() 對於一個日期返回對應的星期幾
hour() 返回一個時間的小時部分
minute() 返回一個時間的分鍾部分
month() 返回一個日期的月份部分
second() 返回一個日期的秒部分
time() 返回一個日期時間的時間部分
year() 返回一個日期的年份部分
now() 返回當前的日期和時間

adddate()

   大致可以分為兩類用法,第一種,第一個參數為日期,第二個參數為整數時,這時代表的意思是在在此日期基礎上增加的天數。

例如:

select ADDDATE('2021-11-07',5);

第二種:是第一參數為日期,第二個參數為任意時間表達式,該表達式可為多少分鍾、或者多少毫秒、亦或者多少周等等。第二個參數的寫法為 interval 空格  一個整型的時間量  空格 時間單位

例如:

select ADDDATE('2021-11-07',interval 6243150562 second );

select ADDDATE('2021-11-07',interval 5 week );

select ADDDATE('2021-11-07',interval 2 quarter); --增加半年

 

addtime()

 用法:共有兩個參數,第一個參數是要被添加的日期或時間,第二個參數是增加的時間

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

 

curdate()

返回的是當前服務器日期

select curdate();

 

curtime()

返回當前服務器的時間信息

select curtime();

 

date()

將含有日期和時間的參數返回日期部分

select date('2021-07-07 11:11:20');

 

datediff()

計算兩個時間的日期差值,共有兩個日期時間參數,會拿第一個參數的日期部分減去第二個參數的日期部分,如果第一個參數的時間比第二個參數的時間靠后(通俗點說就是值大)那么差值就是正數,否則為負數

select datediff('2021-11-10 11:11:20','2021-11-07 19:13:21');

select datediff('2021-11-10 11:11:20','2021-12-07 19:13:21');

 

date_add()

這是個靈活的日期計算函數。這個函數有兩個參數,第一個參數是要被添加的日期或時間,第二個參數則要自由了很多,可以是毫秒,秒,分,時,星期,年,季度,等等基本可以表示時間的單位,也可以為負數進行減去時間

例如

SELECT DATE_ADD('1998-01-01 00:00:00',INTERVAL '-3 20' DAY_HOUR);--表示的是在1998年1月1日,減去3天零20個小時

--cast函數一個轉換的函數,CAST(6/4 AS DECIMAL(3,1))是轉換成小數,值為1.5。HOUR_MINUTE的意思為幾小時幾分鍾,小時與分鍾之間
--可以是等號,空格,下划線,小數點等等符號。那么1.5 HOUR_MINUTE就代表一個小時五分鍾
SELECT DATE_ADD('1970-01-01 12:00:00',   INTERVAL CAST(6/4 AS DECIMAL(3,1)) HOUR_MINUTE);

 

date_format()

日期格式化函數是根據格式字符串格式化日期值。以下說明符可以在格式字符串中使用。格式說明符前必須有%字符。date_format(日期,格式化符號);

%a 縮寫星期名(Sun..Sat)
%b 縮寫月名 (Jan..Dec)
%c 月,數值(0..12)
%D 帶有英文前綴的月中的天(0th, 1st, 2nd, 3rd, …)
%d 月的天,數值(00-31)
%e 月的天,數值(0-31)
%f 微秒(000000..999999)
%H 小時 (00-23)
%h 小時 (01-12)
%I 小時 (01-12)
%i 分鍾,數值(00-59)
%j 年的天 (001-366)
%k 小時 (0-23)
%l 小時 (1-12)
%M 月名 (January..December)
%m 月,數值(00-12)
%p AM 或 PM
%r 時間,12-小時(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 時間, 24-小時 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,與 %X 使用
%v 周 (01-53) 星期一是一周的第一天,與 %x 使用
%W 星期名(Sunday..Saturday)
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,與 %V 使用
%x 年,其中的星期一是周的第一天,4 位,與 %v 使用
%Y 年,4 位
%y 年,2 位

例如:

SELECT DATE_FORMAT('2021-11-10 22:23:00', '%W %M %Y');

day()

該函數返回一個時間的天數部分,用法 day(時間);與dayofmonth()函數等價

SELECT day('2021-11-10 23:59:59.999999');

dayofweek()

該函數返回一個時間對應的星期幾,用法 dayofweek(時間);

SELECT dayofweek('2021-11-10 23:59:59.999999');

dayofyear()

該函數是返回一年該日期在此年中第多少天

SELECT dayofyear('2021-02-10 23:59:59.999999');

hour()

該函數返回此時間的小時部分

SELECT hour('2021-02-10 23:59:59.999999');

minute()

該函數返回此時間的分鍾部分

SELECT minute('2021-02-10 23:59:59.999999');

month()

該函數返回此時間的月份部分

SELECT month('2021-02-10 23:59:59.999999');

second()

該函數返回時間的秒數部分

SELECT second('2021-02-10 23:59:59.999999');

time()

該函數返回日期時間的時間部分

SELECT time ('2021-02-10 23:59:59.999999');

year()

該函數返回日期時間的年份部分

SELECT year ('2021-02-10 23:59:59.999999');

now()

該函數返回當前的日期時間

select now();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM