欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql 中的日期時間函數(shù)示例詳解

 更新時間:2025年06月11日 11:04:18   作者:獨淚了無痕  
MySQL中的常見日期函數(shù),包括日期函數(shù)的介紹、日期格式轉(zhuǎn)換、日期計算、日期比較以及其他日期函數(shù),這些日期函數(shù)可以幫助我們更好地處理和操作日期和時間數(shù)據(jù),提高數(shù)據(jù)庫的查詢和分析效率,本文給大家介紹Mysql 中的日期時間函數(shù),感興趣的朋友一起看看吧

前言

  在 MySQL 中,處理日期和時間是非常常見的需求,MySQL中內(nèi)置了大量的日期和時間函數(shù),能夠靈活、方便地處理日期和時間數(shù)據(jù),本節(jié)就簡單介紹一下 MySQL中內(nèi)置的日期和時間函數(shù),以便更好地利用這些函數(shù)來處理日期和時間數(shù)據(jù)。

獲取當前日期和時間

  獲取當前時刻的時間就是獲取程序運行的那一刻與時間相關的數(shù)據(jù),比如年月日、時分秒等信息。

序號函數(shù)簡要說明
1now()用于獲取當前的日期和時間,其返回值格式為 YYYY-MM-DD HH:MM:SS。
該函數(shù)在整個查詢過程中保持不變,可以確保所有記錄的時間戳一致,因此被廣泛用于記錄數(shù)據(jù)的創(chuàng)建時間或更新時間。
2curdate()用于獲取當前的日期,其返回值格式為 YYYY-MM-DD。該函數(shù)在需要僅獲取日期信息時非常有用,因為它可以避免對時間部分的額外處理。
3curtime()用于獲取當前的時間,其返回值格式為 HH:MM:SS。該函數(shù)在需要僅獲取時間信息時非常有用,例如在記錄事件發(fā)生的具體時間或計算時間間隔時。
4current_timestamp()用于獲取當前的日期和時間,其返回值格式為 YYYY-MM-DD HH:MM:SS。
5sysdate()

用于獲取執(zhí)行時的日期和時間。

INSERT INTO orders (order_id, order_time) VALUES (1, NOW());
SELECT COUNT(*) FROM sales WHERE sale_date = CURDATE();
SELECT CURTIME();

日期時間格式化與轉(zhuǎn)換

  我們知道同一個日期時間會有多種不同的表示方式,有的時候需要在不同格式之間相互轉(zhuǎn)換。在 MySQL 中,可以使用日期函數(shù)將日期和時間數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式,以下是一些常用的日期格式轉(zhuǎn)換函數(shù):

序號函數(shù)簡要說明
1date_format(datetime,format)用于將日期和時間值按照指定的格式進行格式化,其返回值為一個字符串,在需要將日期和時間以特定格式展示時非常有用。
該函數(shù)支持多種格式化選項,可以根據(jù)需求靈活定制日期時間的顯示格式。
2time_format(time,format)按照指定的格式format來格式化日期date
3STR_TO_DATE(str, format)用于將字符串轉(zhuǎn)換為日期或日期時間值,其返回值為一個日期或日期時間值,在需要將非標準格式的字符串日期轉(zhuǎn)換為標準的日期格式時非常有用。
4FROM_DAYS()將天數(shù)轉(zhuǎn)換為日期
5TIME_TO_SEC(time)將time轉(zhuǎn)化為秒并返回結(jié)果值,轉(zhuǎn)化的公式為:小時*3600 + 分鐘*60 + 秒。
6SEC_TO_TIME(seconds)將seconds描述轉(zhuǎn)化為包含小時、分鐘和秒的時間

  在上述方法中,其中 datetime 表示要被轉(zhuǎn)換的具體的日期時間,format 表示要轉(zhuǎn)換成的格式,可選的格式如下:

格式描述格式描述格式描述
%Y4位數(shù)的年%T返回當前的時分秒, 24-小時 (hh:mm:ss)
%b月份對應的英文縮寫%M月份對應的英文全稱%m01-12的月
%c1-12的月份數(shù)值%d01-31的某月里面的第幾天%e1-31的某月里面的第幾天
%D用th后綴表示某月中的第幾天%j001-366的一年中的第幾天%a星期幾對應的英文縮寫
%W星期幾對應的英文全稱%H00-23的小時%h01-12的小時
%i00-59的分鐘%S秒(00-59)%f微秒
SELECT DATE_FORMAT('2022-11-09 12:34:56', '%Y-%m-%d %H:%i:%s');

日期時間計算(加減)

  有的時候我們也需要對日期之間進行運算,比如要獲取今天往前7天對應的日期,或者今天往后13天對應的日期,可以去翻日歷,也可以去數(shù)數(shù),但是這些方法肯定都不是最直接的方法,所以需要日期之間的運算。MySQL 提供了一些日期函數(shù),可以使用這些函數(shù)來執(zhí)行日期加法、日期減法等操作。以下是一些常用的日期計算函數(shù):

序號函數(shù)簡要說明
1date_add(date, INTERVAL num unit)用于在日期上添加指定的時間間隔,其返回值為一個新的日期值,常用于計算未來的日期。
2ADDDATE(date, INTERVAL num unit)在日期上加上指定的時間間隔。
3ADDTIME(time1,time2)返回time1加上time2的時間
4date_sub(date, INTERVAL num unit)用于從日期中減去指定的時間間隔,其返回值為一個新的日期值,常用于計算過去的日期。
5SUBDATE(date, INTERVAL num unit)從日期中減去指定的時間間隔。
6SUBTIME(time1,time2)返回time1減去time2后的時間。
7datediff(date1,date2)用于計算兩個日期之間的天數(shù)差,其返回值為一個整數(shù),表示兩個日期之間的天數(shù)差,常用于計算時間間隔,例如任務的持續(xù)時間等。
8TIMEDIFF(time1, time2)計算兩個時間之間的時間差
9TIMESTAMPDIFF(unit, expr1, expr2)計算兩個日期之間的時間差,以指定的單位返回。
10TIMESTAMPADD(unit, interval, datetime_expr)給日期時間添加指定單位的時間
11TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)返回兩個日期時間表達式的時間差,使用指定的單位

  在上述方法中,date表示具體的日期時間,interval是一個固定的參數(shù),unit 表示要返回的單獨的部分,unit 值可以是下列的值:

unit說明unit說明unit說明
yearmonthday
hour小時minute分鐘second
week周數(shù),全年第幾周
SELECT DATE_ADD('2022-11-09', INTERVAL 10 DAY);
SELECT DATE_SUB('2022-11-09', INTERVAL 10 DAY);
SELECT DATEDIFF('2022-11-09', '2023-06-17');
SELECT TIMESTAMPDIFF(MONTH, '2022-01-01', '2023-12-31');

日期時間部分提取

序號函數(shù)簡要說明
1YEAR(date)用于獲取日期所在的年份,其返回值為一個整數(shù),表示年份。在實際應用中,常用于按年份對數(shù)據(jù)進行分組或篩選。
2MONTH(date)用于獲取日期對應的月份,其返回值為一個整數(shù),表示月份(1-12)。在實際應用中,在按月份對數(shù)據(jù)進行分組或篩選時非常有用。
3DAY(date)用于從日期或日期時間值中提取天數(shù)部分,其返回值為一個整數(shù),表示月份中的天數(shù),取值范圍1-31。
4HOUR(time)用于從時間或日期時間值中提取小時部分,其返回值為一個整數(shù),表示小時,取值范圍0-23。
5MINUTE(time)用于從時間或日期時間值中提取分鐘部分,其返回值為一個整數(shù),表示分鐘,取值范圍0-59。
6SECOND(time)用于從時間或日期時間值中提取秒部分,其返回值為一個整數(shù),表示秒,取值范圍0-59。
7DATE(date)用于提取日期或日期時間的日期部分
8MONTHNAME(date)用于獲取日期所在月份的英文名稱。
9DAYNAME(date)用于獲取給定日期對應星期的英文名稱。
10WEEKDAY(date)用于獲取日期對應的一周中的索引值。0表示星期一,1表示星期二,以此類推。
11QUARTER(date)用于獲取日期對應的季度,范圍為1~4。
12WEEK(date)用于獲取給定日期所在年的第幾周。
13WEEKOFYEAR(date)用于獲取給定日期所在年份的第幾周。
14DAYOFYEAR(date)用于獲取日期是一年中的第幾天
15DAYOFMONTH(date)用于獲取日期位于所在月份的第幾天
16DAYOFWEEK(date)用于獲取日期對應的一周中的索引值。1表示星期日,2表示星期一,以此類推。
17YEARWEEK(date)用于獲取日期所在的年份和周數(shù)。
18LAST_DAY(date)用于獲取日期所在月份的最后一天的日期。
SELECT YEAR('2022-11-09 12:34:56');
SELECT MONTH('2022-11-09 12:34:56');
SELECT DAY('2022-11-09 12:34:56');
SELECT HOUR('2022-11-09 12:34:56');
SELECT MINUTE('2022-11-09 12:34:56');
SELECT SECOND('2022-11-09 12:34:56');

時間戳轉(zhuǎn)換

序號函數(shù)簡要說明
1FROM_UNIXTIME(unix_timestamp[, format])將UNIX時間戳轉(zhuǎn)換為可讀的日期格式。
2UNIX_TIMESTAMP(date)將日期轉(zhuǎn)換為UNIX時間戳。
SELECT FROM_UNIXTIME(1672444800);
SELECT UNIX_TIMESTAMP(NOW());

其他有用的函數(shù)

函數(shù)簡要說明
MAKEDATE(year,n)針對給定年份與所在年份中的天數(shù)返回一個日期。
MAKETIME(hour,minute,second)將給定的小時、分鐘和秒組合成時間并返回。
SELECT MAKEDATE(2025,1);

附錄

獲取本月第一天

SELECT DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY);
SELECT CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m'), '-01');

查詢今日、昨日、周、上月、本月數(shù)據(jù)

-- 今天
SELECT * FROM 表名 WHERE to_days(時間字段名) = to_days(now());
-- 昨天
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(時間字段名) <= 1 AND TO_DAYS(NOW()) - TO_DAYS(時間字段名) > 0;
-- 近7天
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(時間字段名);
-- 查詢當前這周的數(shù)據(jù)(注意:獲取周是從周日至周六計算的,與我們國內(nèi)周一至周日的習慣不同)
SELECT * FROM 表名 WHERE YEARWEEK(date_format(時間字段名, '%Y-%m-%d')) = YEARWEEK(now());
-- 查詢上周的數(shù)據(jù)(同上)
SELECT * FROM 表名 WHERE YEARWEEK(date_format(時間字段名, '%Y-%m-%d')) = YEARWEEK(now()) - 1;
-- 近30天
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(時間字段名);
查詢當前月份的數(shù)據(jù) 
-- SELECT * FROM 表名 WHERE DATE_FORMAT(時間字段名, '%Y-%m') = DATE_FORMAT(now(),'%Y-%m');
-- SELECT * FROM 表名 WHERE DATE_FORMAT(時間字段名, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m' );
-- 上一月數(shù)據(jù)
SELECT * FROM 表名 WHERE PERIOD_DIFF(date_format(now( ), '%Y%m') , date_format(時間字段名, '%Y%m')) = 1;
-- 查詢本季度數(shù)據(jù)
SELECT * FROM 表名 WHERE QUARTER(時間字段名) = QUARTER(now());
-- 查詢上季度數(shù)據(jù)
SELECT * FROM 表名 WHERE QUARTER(時間字段名)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
-- 查詢本年數(shù)據(jù)
SELECT * FROM 表名 WHERE YEAR(時間字段名)=YEAR(NOW());
-- 查詢上年數(shù)據(jù)
SELECT * FROM 表名 WHERE year(時間字段名)=year(date_sub(now(),interval 1 year));
-- 查詢距離當前現(xiàn)在6個月的數(shù)據(jù)
SELECT * FROM 表名 WHERE 時間字段名 between date_sub(now(), interval 6 month) and now();

小結(jié)

  MySQL 中的常見日期函數(shù),包括日期函數(shù)的介紹、日期格式轉(zhuǎn)換、日期計算、日期比較以及其他日期函數(shù)。這些日期函數(shù)可以幫助我們更好地處理和操作日期和時間數(shù)據(jù),提高數(shù)據(jù)庫的查詢和分析效率。熟練掌握這些日期函數(shù),將有助于我們在 MySQL 中更好地處理日期和時間相關的業(yè)務需求

到此這篇關于Mysql 中的日期時間函數(shù)匯總的文章就介紹到這了,更多相關Mysql 日期時間函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論