新聞中心

日期在我們平時(shí)在MySQL查詢中是非常常用的一種類型,日期類型的值又會(huì)因不同場(chǎng)景而存儲(chǔ)的格式不一致,在我們查詢的時(shí)候,就需要經(jīng)過轉(zhuǎn)換到指定格式來查詢我們想要的數(shù)據(jù),這時(shí)候,日期函數(shù)就能給我?guī)順O大的便捷,下面,羅列一下常用的日期函數(shù),方便我們記憶并使用。
NOW()
now()是獲取當(dāng)前日期加時(shí)間,如:
select NOW() //2023-03-29 07:41:37
CURDATE()
CURDATE()獲取當(dāng)前日期,如:
select CURDATE() //2023-03-29
CURTIME()
CURTIME()獲取當(dāng)前時(shí)間,如:
select CURTIME() //07:44:17
DATE()
DATE()將字符串轉(zhuǎn)為日期
select DATE('2023-03-29') //2023-03-29
YEAR()
YEAR()取日期年份,如:
select YEAR('2023-03-29') //2023
select YEAR(DATE('2023-03-29')) //2023
YEARWEEK()
YEARWEEK()返回年份+周數(shù),如:
select YEARWEEK(DATE('2023-03-29')) //202313
YEARWEEK有兩個(gè)參數(shù),第一個(gè)是日期時(shí)間,第二個(gè)是指定一周中的哪一天開始
WEEKOFYEAR()
WEEKOFYEAR()取當(dāng)前周數(shù),如:
select WEEKOFYEAR(DATE('2023-03-29')) //13
DAYOFYEAR()
DAYOFYEAR()取當(dāng)前年份的天數(shù),如:
select DAYOFYEAR(DATE('2023-03-29')) //88
MONTH()、DAYOFMONTH()
MONTH()取日期月數(shù),如:
select MONTH(DATE('2023-03-29')) //3
DAYOFMONTH()取當(dāng)前月份的天數(shù),如:
select DAYOFMONTH(DATE('2023-03-29')) //29
DAY()、DAYOFWEEK()、LAST_DAY()
DAY()取日期天數(shù),如:
select DAY(DATE('2023-03-29')) //29
DAYOFWEEK()一周中的第幾天,從星期日開始。
select DAYOFWEEK(DATE('2023-03-29')) //4
LAST_DAY()月最后一天日期
select LAST_DAY(DATE('2023-03-29')) //2023-03-31
ADDDATE、DATE_ADD、SUBDATE、DATE_SUB,日期加減函數(shù)
ADDDATE()有ADDDATE(date,INTERVAL expr unit)和DDDATE(date,days)兩種參數(shù),默認(rèn)是天,在指定日期加指定天數(shù)
select ADDDATE(CURRENT_DATE,1) //2023-03-30
DATE_ADD()則只有DATE_ADD(date,INTERVAL expr unit)。
SUBDATE()和ADDDATE()參數(shù)一樣,作用相反,在指定日期減去指定天數(shù)。
這里的unit有一下幾種:
|
類型 |
含義 |
用法示例 |
|
YEAR |
年 |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 YEAR) |
|
MONTH |
月 |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 MONTH) |
|
DAY |
日 |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY) |
|
HOUR |
時(shí) |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 HOUR) |
|
MINUTE |
分 |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 MINUTE) |
|
SECOND |
秒 |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 SECOND) |
|
YEAR_MONTH |
年和月 |
DATE_ADD(CURRENT_DATE(),INTERVAL 1 YEAR_MONTH)或DATE_ADD(CURRENT_DATE(),INTERVAL ‘1 1’ YEAR_MONTH) |
|
DAY_HOUR |
日和小時(shí) |
DATE_ADD(NOW(),INTERVAL 1 DAY_HOUR)或DATE_ADD(NOW(),INTERVAL ‘1 1’ DAY_HOUR) |
|
DAY_MINUTE |
日和分鐘 |
DATE_ADD(NOW(),INTERVAL 1 DAY_MINUTE)或DATE_ADD(NOW(),INTERVAL ‘1 1’ DAY_MINUTE) |
|
DAY_SECOND |
日和秒鐘 |
DATE_ADD(NOW(),INTERVAL 1 DAY_SECOND)或DATE_ADD(NOW(),INTERVAL ‘1 1’ DAY_SECOND) |
|
HOUR_MINUTE |
時(shí)和分 |
DATE_ADD(NOW(),INTERVAL 1 HOUR_MINUTE)或DATE_ADD(NOW(),INTERVAL ‘1 1’ HOUR_MINUTE) |
|
HOUR_SECOND |
時(shí)和秒 |
DATE_ADD(NOW(),INTERVAL 1 HOUR_SECOND)或DATE_ADD(NOW(),INTERVAL ‘1 1’ HOUR_SECOND) |
|
MINUTE_SECOND |
分和秒 |
DATE_ADD(NOW(),INTERVAL 1 MINUTE_SECOND)或DATE_ADD(NOW(),INTERVAL ‘1 1’ MINUTE_SECOND) |
DATEDIFF(),TIMESTAMPDIFF(),時(shí)間之差
DATEDIFF返回兩個(gè)日期之間的天數(shù),如:
select DATEDIFF('2023-03-29','2023-03-28') //1
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)返回指定類型的值。
|
類型 |
含義 |
|
YEAR |
年 |
|
QUARTER |
季度 |
|
MONTH |
WEEK |
|
DAY |
天 |
|
HOUR |
小時(shí) |
|
MINUTE |
分 |
|
SECOND |
秒 |
如:
select TIMESTAMPDIFF(HOUR,'2023-03-28 12:00:00','2023-03-29 12:00:00') //24 //小時(shí)
DATE_FORMAT 日期格式化
DATE_FORMAT(date,format)返回指定格式化日期。
格式有一下多種:
|
格式 |
含義 |
|
%a |
縮寫星期名 |
|
%b |
縮寫月名 |
|
%c |
月,數(shù)值 |
|
%D |
帶有英文前綴的月中的天 |
|
%d |
月的天,數(shù)值(00-31) |
|
%e |
月的天,數(shù)值(0-31) |
|
%f |
微秒 |
|
%H |
小時(shí) (00-23) |
|
%h |
小時(shí) (01-12) |
|
%I |
小時(shí) (01-12) |
|
%i |
分鐘,數(shù)值(00-59) |
|
%j |
年的天 (001-366) |
|
%k |
小時(shí) (0-23) |
|
%l |
小時(shí) (1-12) |
|
%M |
月名 |
|
%m |
月,數(shù)值(00-12) |
|
%p |
AM 或 PM |
|
%r |
時(shí)間,12-小時(shí)(hh:mm:ss AM 或 PM) |
|
%S |
秒(00-59) |
|
%s |
秒(00-59) |
|
%T |
時(shí)間, 24-小時(shí) (hh:mm:ss) |
|
%U |
周 (00-53) 星期日是一周的第一天 |
|
%u |
周 (00-53) 星期一是一周的第一天 |
|
%V |
周 (01-53) 星期日是一周的第一天,與 %X 使用 |
|
%v |
周 (01-53) 星期一是一周的第一天,與 %x 使用 |
|
%W |
星期名 |
|
%w |
周的天 (0=星期日, 6=星期六) |
|
%X |
年,其中的星期日是周的第一天,4 位,與 %V 使用 |
|
%x |
年,其中的星期一是周的第一天,4 位,與 %v 使用 |
|
%Y |
年,4 位 |
|
%y |
年,2 位 |
常用格式:
select DATE_FORMAT(now(),'%Y-%m-%d') //2023-03-29
select DATE_FORMAT(now(),'%Y%m%d') //20230329
select DATE_FORMAT(now(),'%Y%m') //202303
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') //2023-03-29 13:37:21
UNIX_TIMESTAMP 時(shí)間戳函數(shù)
UNIX_TIMESTAMP()返回一個(gè)unix時(shí)間戳,從’1970-01-01 00:00:00’開始的秒數(shù)。
select UNIX_TIMESTAMP() //1680068449
select UNIX_TIMESTAMP('2023-03-29 12:00:00') //1680062400
FROM_UNIXTIME
FROM_UNIXTIME將時(shí)間戳轉(zhuǎn)換為指定日期格式的字符串,有unix_timestamp和format兩個(gè)參數(shù),format的取值范圍與DATE_FORMAT一致。
select FROM_UNIXTIME(1680068449) //2023-03-29 13:40:49
select FROM_UNIXTIME(1680068449,'%Y-%m-%d') //2023-03-29
當(dāng)前題目:MySQL中常用的日期函數(shù)
當(dāng)前地址:http://m.fisionsoft.com.cn/article/dpjcshc.html


咨詢
建站咨詢
