最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)。

獲取當(dāng)前日期和時間

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

序號函數(shù)簡要說明
1now()用于獲取當(dāng)前的日期和時間,其返回值格式為 YYYY-MM-DD HH:MM:SS。
該函數(shù)在整個查詢過程中保持不變,可以確保所有記錄的時間戳一致,因此被廣泛用于記錄數(shù)據(jù)的創(chuàng)建時間或更新時間。
2curdate()用于獲取當(dāng)前的日期,其返回值格式為 YYYY-MM-DD。該函數(shù)在需要僅獲取日期信息時非常有用,因為它可以避免對時間部分的額外處理。
3curtime()用于獲取當(dāng)前的時間,其返回值格式為 HH:MM:SS。該函數(shù)在需要僅獲取時間信息時非常有用,例如在記錄事件發(fā)生的具體時間或計算時間間隔時。
4current_timestamp()用于獲取當(dāng)前的日期和時間,其返回值格式為 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)換為日期或日期時間值,其返回值為一個日期或日期時間值,在需要將非標(biāo)準(zhǔn)格式的字符串日期轉(zhuǎn)換為標(biāo)準(zhǔ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返回當(dāng)前的時分秒, 24-小時 (hh:mm:ss)
%b月份對應(yīng)的英文縮寫%M月份對應(yīng)的英文全稱%m01-12的月
%c1-12的月份數(shù)值%d01-31的某月里面的第幾天%e1-31的某月里面的第幾天
%D用th后綴表示某月中的第幾天%j001-366的一年中的第幾天%a星期幾對應(yīng)的英文縮寫
%W星期幾對應(yīng)的英文全稱%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天對應(yīng)的日期,或者今天往后13天對應(yīng)的日期,可以去翻日歷,也可以去數(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ù)差,常用于計算時間間隔,例如任務(wù)的持續(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ù),表示年份。在實際應(yīng)用中,常用于按年份對數(shù)據(jù)進行分組或篩選。
2MONTH(date)用于獲取日期對應(yīng)的月份,其返回值為一個整數(shù),表示月份(1-12)。在實際應(yīng)用中,在按月份對數(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)用于獲取給定日期對應(yīng)星期的英文名稱。
10WEEKDAY(date)用于獲取日期對應(yīng)的一周中的索引值。0表示星期一,1表示星期二,以此類推。
11QUARTER(date)用于獲取日期對應(yīng)的季度,范圍為1~4。
12WEEK(date)用于獲取給定日期所在年的第幾周。
13WEEKOFYEAR(date)用于獲取給定日期所在年份的第幾周。
14DAYOFYEAR(date)用于獲取日期是一年中的第幾天
15DAYOFMONTH(date)用于獲取日期位于所在月份的第幾天
16DAYOFWEEK(date)用于獲取日期對應(yīng)的一周中的索引值。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(時間字段名);
-- 查詢當(dāng)前這周的數(shù)據(jù)(注意:獲取周是從周日至周六計算的,與我們國內(nèi)周一至周日的習(xí)慣不同)
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(時間字段名);
查詢當(dāng)前月份的數(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));
-- 查詢距離當(dāng)前現(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 中更好地處理日期和時間相關(guān)的業(yè)務(wù)需求

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

相關(guān)文章

  • mysql 5.7安裝 MySQL 服務(wù)無法啟動但是服務(wù)沒有報告任何錯誤

    mysql 5.7安裝 MySQL 服務(wù)無法啟動但是服務(wù)沒有報告任何錯誤

    這篇文章主要介紹了mysql 5.7安裝 MySQL 服務(wù)無法啟動但是服務(wù)沒有報告任何錯誤的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Mysql 中的日期時間函數(shù)示例詳解

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

    MySQL中的常見日期函數(shù),包括日期函數(shù)的介紹、日期格式轉(zhuǎn)換、日期計算、日期比較以及其他日期函數(shù),這些日期函數(shù)可以幫助我們更好地處理和操作日期和時間數(shù)據(jù),提高數(shù)據(jù)庫的查詢和分析效率,本文給大家介紹Mysql 中的日期時間函數(shù),感興趣的朋友一起看看吧
    2025-06-06
  • MySQL數(shù)據(jù)庫必知必會之安全管理

    MySQL數(shù)據(jù)庫必知必會之安全管理

    MySQL數(shù)據(jù)庫通常包含關(guān)鍵的數(shù)據(jù),為確保這些數(shù)據(jù)的安全和完整,需要利用訪問控制和用戶管理的功能,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫必知必會之安全管理的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • MySQL 聚合函數(shù)及應(yīng)用

    MySQL 聚合函數(shù)及應(yīng)用

    這段文章詳細介紹了聚合函數(shù)在SQL中的應(yīng)用,包括AVG、SUM、MIN、MAX和 COUNT等、MAX和 COUNT的的用、MAX和 COUNT)的使用場景和 COUNT)的的使用場景,并解釋了HAVING和WHERE的區(qū)別和 COUNT)的使用場景,以及SQL查詢語句的執(zhí)行順序和優(yōu)化技巧,感興趣的朋友一起看看吧
    2026-05-05
  • MySQL InnoDB存儲引擎的深入探秘

    MySQL InnoDB存儲引擎的深入探秘

    這篇文章主要給大家介紹了關(guān)于MySQL InnoDB存儲引擎的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • mysql設(shè)置默認值無效問題及解決

    mysql設(shè)置默認值無效問題及解決

    這篇文章主要介紹了mysql設(shè)置默認值無效問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • MySQL 審計級別配置實現(xiàn)步驟

    MySQL 審計級別配置實現(xiàn)步驟

    本文主要介紹了MySQL 審計級別配置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • MySQL中的聯(lián)合索引學(xué)習(xí)教程

    MySQL中的聯(lián)合索引學(xué)習(xí)教程

    這篇文章主要介紹了MySQL中的聯(lián)合索引學(xué)習(xí)教程,其中談到了聯(lián)合索引對排序的優(yōu)化等知識點,需要的朋友可以參考下
    2015-11-11
  • MySQL基于GTID主從搭建

    MySQL基于GTID主從搭建

    這篇文章主要介紹了MySQL基于GTID主從搭建,文章首先通過xtarbackup來同步數(shù)據(jù)展開文章內(nèi)容詳情,感興趣的小伙伴可以參考一下
    2022-08-08
  • MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解

    MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解

    這篇文章主要介紹了MySQL 5.6下table_open_cache參數(shù)合理配置詳解,需要的朋友可以參考下
    2018-03-03

最新評論

景洪市| 藁城市| 昭平县| 台东市| 南平市| 靖西县| 庄浪县| 鲜城| 化德县| 静安区| 乌兰浩特市| 应城市| 巴塘县| 湘潭县| 依兰县| 龙陵县| 江陵县| 宁河县| 蓝山县| 达拉特旗| 富川| 永昌县| 拉萨市| 大悟县| 乌什县| 临澧县| 历史| 桐柏县| 山阳县| 正阳县| 宕昌县| 呼和浩特市| 陆良县| 上高县| 固原市| 辽阳市| 康定县| 和林格尔县| 衡南县| 新津县| 宜宾县|