MySQL日期、時間函數總結

2021-12-25 紀鑫鑫

一、MySQL獲得當前日期時間函數

獲得當前日期+時間(date + time)函數:now()

mysql> select now();+-+| now() |+-+| 2021-08-12 20:20:46 |+-+

獲得當前日期+時間(date + time)函數:sysdate()

sysdate()日期時間函數跟now()類似,不同之處在於:now()在執行開始時值就得到了,sysdate()在函數執行時動態得到值。看下面的例子就明白了:

mysql> select now(), sleep(3), sysdate();+-++-+| now() | sleep(3) | sysdate() |+-++-+| 2021-08-08 22:28:21 | 0 | 2008-08-08 22:28:24 |+-++-+

sysdate()日期時間函數,一般情況下很少用到。

MySQL獲得當前時間戳函數:current_timestamp, current_timestamp()

mysql> select current_timestamp, current_timestamp();+-+-+| current_timestamp | current_timestamp() |+-+-+| 2021-08-12 12:22:24 | 2021-08-09 12:22:24 |+-+-+

二、MySQL日期轉換函數、時間轉換函數

MySQL Date/Time to Str(日期/時間轉換為字符串)函數:date_format(date,format), time_format(time,format)

mysql> select date_format('2021-08-08 22:23:01', '%Y%m%d%H%i%s');+--+| date_format('2021-08-08 22:23:01', '%Y%m%d%H%i%s') |+--+| 20210808222301 |+--+

MySQL日期、時間轉換函數:date_format(date,format), time_format(time,format)能夠把一個日期/時間轉換成各種各樣的字符串格式。它是str_to_date(str,format)函數的一個逆轉換。

MySQL Str to Date(字符串轉換為日期)函數:str_to_date(str, format)

select str_to_date('08/09/2008', '%m/%d/%Y'); select str_to_date('08/09/08' , '%m/%d/%y'); select str_to_date('08.09.2008', '%m.%d.%Y'); select str_to_date('08:09:30', '%h:%i:%s'); select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); 

可以看到,str_to_date(str,format)轉換函數,可以把一些雜亂無章的字符串轉換為日期格式。另外,它也可以轉換為時間。「format」 可以參看MySQL手冊。

MySQL(日期、天數)轉換函數:to_days(date), from_days(days)

select to_days('0000-00-00'); select to_days('2008-08-08'); 

MySQL(時間、秒)轉換函數:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); select sec_to_time(3605); 

MySQL拼湊日期、時間函數:makdedate(year,dayofyear),

maketime(hour,minute,second)select makedate(2001,31); select makedate(2001,32); select maketime(12,15,30); 

MySQL(Unix 時間戳、日期)轉換函數

unix_timestamp(),unix_timestamp(date),from_unixtime(unix_timestamp),from_unixtime(unix_timestamp,format)

下面是示例:

select unix_timestamp(); select unix_timestamp('2008-08-08'); select unix_timestamp('2008-08-08 12:30:00'); select from_unixtime(1218290027); select from_unixtime(1218124800); select from_unixtime(1218169800); select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); 

三、MySQL日期時間計算函數

MySQL為日期增加一個時間間隔:date_add()

set @dt = now();select date_add(@dt, interval 1 day); select date_add(@dt, interval 1 hour); select date_add(@dt, interval 1 minute); select date_add(@dt, interval 1 second);select date_add(@dt, interval 1 microsecond);select date_add(@dt, interval 1 week);select date_add(@dt, interval 1 month);select date_add(@dt, interval 1 quarter);select date_add(@dt, interval 1 year);select date_add(@dt, interval -1 day); 

MySQL adddate(), addtime()函數,可以用date_add()來替代。下面是date_add()實現addtime()功能示例:

mysql> set @dt = '2008-08-09 12:12:33';
mysql> select date_add(@dt, interval '01:15:30' hour_second);+---+| date_add(@dt, interval '01:15:30' hour_second) |+---+| 2008-08-09 13:28:03 |+---+
mysql> select date_add(@dt, interval '1 01:15:30' day_second);+----+| date_add(@dt, interval '1 01:15:30' day_second) |+----+| 2008-08-10 13:28:03 |+----+

MySQL為日期減去一個時間間隔:date_sub()

mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);+----+| date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |+----+| 1997-12-30 22:58:59 |+----+

MySQL date_sub()日期時間函數和date_add()用法一致,不再贅述。

MySQL日期、時間相減函數:datediff(date1,date2), timediff(time1,time2)

MySQL datediff(date1,date2):兩個日期相減 date1 - date2,返回天數。

select datediff('2008-08-08', '2008-08-01'); select datediff('2008-08-01', '2008-08-08'); 

MySQL timediff(time1,time2):兩個日期相減 time1 - time2,返回time差值。

select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); select timediff('08:08:08', '00:00:00'); 

注意:timediff(time1,time2) 函數的兩個參數類型必須相同。

MySQL時間戳(timestamp)轉換、增、減函數:

timestamp(date) timestamp(dt,time) timestampadd(unit,interval,datetime_expr) timestampdiff(unit,datetime_expr1,datetime_expr2) 

請看示例部分:

select timestamp('2008-08-08'); select timestamp('2008-08-08 08:00:00', '01:01:01'); select timestamp('2008-08-08 08:00:00', '10 01:01:01'); 
select timestampadd(day, 1, '2008-08-08 08:00:00'); select date_add('2008-08-08 08:00:00', interval 1 day);

MySQL timestampadd() 函數類似於 date_add()。

select timestampdiff(year,'2002-05-01','2001-01-01'); select timestampdiff(day ,'2002-05-01','2001-01-01'); select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); 
select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00');

MySQL timestampdiff()函數就比datediff()功能強多了,datediff()只能計算兩個日期(date)之間相差的天數。

四、MySQL時區(timezone)轉換函數

convert_tz(dt,from_tz,to_tz)select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); 

時區轉換也可以通過date_add, date_sub, timestampadd來實現。

select date_add('2008-08-08 12:00:00', interval -8 hour); select date_sub('2008-08-08 12:00:00', interval 8 hour); select timestampadd(hour, -8, '2008-08-08 12:00:00'); 


點擊進入公眾號,了解更多內容!

相關焦點

  • MySQL那些與日期和時間相關的函數
    【IT168 技術】日期函數可能是比較常使用的一種函數。下面介紹一些最為常用的日期函數及一些容易忽略的問題。  1. NOW、CURRENT_TIMESTAMP和SYSDATE  這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。
  • MySQL中的日期函數大全
    收錄於話題 #mysql市面上的資料庫特別多,儘管使用的語法趨於一致,但是各自內部支持的函數略有差異,之前,給大家分享了SQL Server中常見的日期函數的用法,如果需要了解,可以看看文章末尾的相關閱讀。今天小編總結下MySQL中關於日期函數的使用方法做一個合集,大家可以轉發收藏,後續說不定會使用得到。
  • MySQL中與日期與時間相關的函數
    下面這張圖片,是我們每個人拿起手機就應該看到的,這就是日期與時間!MySQL中如何通過各種函數來實現日期與時間的處理?這就是本文所要探索的問題!【1】獲取當前日期的函數【結論】返回值是以「年月日」的方式展現。
  • MySQL常用函數介紹
    CURDATE 和 CURRENT_DATE   兩個函數作用相同,返回當前系統的日期值CURTIME 和 CURRENT_TIME   兩個函數作用相同,返回當前系統的時間值NOW 和 SYSDATE   兩個函數作用相同,返回當前系統的日期和時間值UNIX_TIMESTAMP   獲取UNIX時間戳函數,返回一個以 UNIX 時間戳為基礎的無符號整數
  • 關於mysql中運算符與函數的概述
    運算符是告訴mysql執行特定的算術或邏輯操作的符號,運算符連接著各個表達式中的操作數,其作用是用來指明對操作數進行的運算。mysql字符函數:1.字符串連接函數:2.字符中轉換大小寫函數:3.求字符串長度的函數:4.刪除空格函數:5.截取字符串:6.獲取指定長度的字符串函數:
  • MySQL技術內幕:時間和日期數據類型
    【IT168 技術】MySQL資料庫中有五種與日期和時間有關的數據類型,各種日期數據類型所佔空間如表2-1所示。  DATETIME和 DATE  DATETIME佔用8位元組,是佔用空間最多的一種日期類型。它既顯示了日期,同時也顯示了時間。
  • mysql UNIX時間戳與日期的相互轉換
    UNIX時間戳轉換為日期用函數: FROM_UNIXTIME() selectFROM_UNIXTIME(1156219870); 日期轉換為UNIX時間戳用函數: UNIX_TIMESTAMP()
  • MYSQL 常用函數
    > select mod(10,3);+-+| mod(10,3) |+-+|         1 |+-+1 row in set (0.00 sec)日期和時間函數函數功能CURDATE()獲取當前日期CURTIME()獲取當前時間NOW()獲取當前的日期和時間WEEK(date)返回日期date為一年中的第幾周YEAR(date)返回日期date的年份HOUR(time)返回時間time的小時值MINUTE(time
  • mysql 時間函數用法 集合 - 軟體與服務 - 中國軟體網-推動ICT產業...
    對於每個類型擁有的值範圍以及並且指定日期何時間值的有效格式的描述見7.3.6 日期和時間類型。這裡是一個使用日期函數的例子。(見例子)date是一個指定開始日期的DATETIME或DATE值,expr是指定加到開始日期或從開始日期減去的間隔值一個表達式,expr是一個字符串;它可以以一個「-」開始表示負間隔。type是一個關鍵詞,指明表達式應該如何被解釋。EXTRACT(type FROM date)函數從日期中返回「type」間隔。
  • SQL乾貨:Mysql日期時間函數
    日期和時間函數部分也是我們日常工作中使用頻率比較高的一部分。這一篇我們主要講講Mysql裡面的日期時間相關的函數,不同資料庫之間基本相同,只會有個別函數的差異。大家掌握一個資料庫的,其他的遇到不會的,直接查就可以了。獲取當前時刻的時間就是獲取程序運行的那一刻與時間相關的數據,比如年月日、時分秒等信息。
  • MySQL常用的函數
    微信公眾號:PHP在線在使用MySQL的時候,靈活運用函數可以提高開發效率,方便解決一些棘手的問題。本文講解的MySQL常用函數包括常用的字符串函數、數值函數、日期和時間函數、聚合函數等。-+1 row in set (0.00 sec)SIGN (number2 ) //函數返回參數的符號3.MySQL日期時間類ADDTIME (date2 ,time_interval ) //將time_interval加到date2CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區CURRENT_DATE
  • MySQL 函數相關
    在以下格式的函數中可以對pos 使用一個負值。('Sakila', -5, 3);            -> 'aki'        mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);            -> 'ki'四、日期和時間函數    CURDATE()或CURRENT_DATE() 返回當前的日期
  • mysql常用函數大全
    字符串函數1.字符串連接CONCATSELECT CONCAT('my','sql')2.字符串替換函數insertSELECTINSERT('hi,mysql',4,5,'sql server')3.字符串轉小寫lowerSELECT LOWER('MySql')4.字符串轉大寫upperSELECT UPPER('layui')
  • Excel日期和時間函數的總結
    Excel中日期和時間的本質Excel日期和時間的本質是數值,只是用日期和時間的形式來表達出來
  • 一文帶你搞定MySQL的日期和時間函數!
    這一篇我們主要講講Mysql裡面的日期時間相關的函數,不同資料庫之間基本相同,只會有個別函數的差異。大家掌握一個資料庫的,其他的遇到不會的,直接查就可以了。獲取當前時刻的時間就是獲取程序運行的那一刻與時間相關的數據,比如年月日、時分秒等信息。1.
  • MySQL 常用語法總結
    SQL有一些統計函數,它們對於生成數據表格很有幫助。為任何有效的SQL表達式,它可以是一個或多個記錄,也可以是別的SQL函數的組合。  標準時間格式是"hh:mm:ss"。  引號內要求所給的是上述的標準日期和時間格式。  日期也可以"yyyymmdd"形式,時間也可以"hhmmss"形式輸入,但其值不需要再加引號。  數字值不需要加引號。這種保存與數據類型無關,這些數據類型都有格式化的專欄來包含(例如:文本,日期,時間,整數等)。  MySQL有一個很有用的命令緩衝區。
  • MySQL常用函數,你真得看看!
    ;        # 輸出 -2truncate:截斷SELECT TRUNCATE(3.1415926,2);        # 輸出 3.14mod:取餘SELECT MOD(10,3);        # 輸出 1SELECT MOD(10,-3);        # 輸出 1日期函數
  • 5 分鐘快速掌握 MySQL 函數
    在講述下面函數之前,我們先補充一個知識,不同時間格式符表示什麼含義呢?3)curtime():只返回系統當前的時間,不包含日期;操作如下:4)獲取日期和時間中年、月、日、時、分② 聚合函數的分類;2)聚合函數的簡單使用3)五個聚合函數中傳入的參數,所支持的數據類型有哪些?mysql不是強類型的程式語言。
  • MySQL常用函數大全,趕快收藏
    刪除字符串左右兩側的空格REPLACE字符串替換函數,返回替換後的新字符串SUBSTRING截取字符串,返回從指定位置開始的指定長度的字符換REVERSE字符串反轉(逆序)函數,返回與原始字符串順序相反的字符串MySQL 日期和時間函數函數名稱作 用CURDATE
  • mysql_data_seek函數詳解
    定義和用法mysql_data_seek()函數的作用是:移動內部結果(行)的指針內部的行指針[internal row pointer]是指:通過mysql_query()函數返回的當前結果所處的行的位置。