首頁 >資料庫 >mysql教程 >MySQL中關於日期函數總計

MySQL中關於日期函數總計

黄舟
黄舟原創
2017-09-26 14:09:393405瀏覽

 關於MySQL日期時間函數,每回總是能發現一些新特性,索性做一次統一的整理,補充下筆記庫。可以會有所遺漏,歡迎補充。

      本文整理了30個時間日期函數,分為4個段落分析,詳見下文。

 

1 取得時間函數

  • ##取得目前時間

    • sysdate()

    • now() , current_timestamp(), current_timestamp,LOCALTIME ,LOCALTIME() ,LOCALTIMESTAMP ,LOCALTIMESTAMP()

  • 休息ns

    • sleep(n)

  • 範例

    • 相同點:取得當前時刻

    • # 差別:傳回時刻是什麼時候,執行SQL還是呼叫該函數的時間值

    • sysdate(),傳回函數呼叫時刻的時間值

    • ##now () ,current_timestamp()/current_timestamp ,LOCALTIME ,LOCALTIME() ,LOCALTIMESTAMP ,LOCALTIMESTAMP()  返回語句呼叫時的時間值;

    • 1這三者的差異
    • #now() , current_timestamp(), current_timestamp,LOCALTIME ,LOCALTIME() ,LOCALTIMESTAMP ,LOCALTIMESTAMP()

    • 2 時間計算函數
    • 時間之差
    • datediff(date1, date2 ),timediff(time1 , time2 ),  timestampdiff(interval,datetime_expr1,datetime_expr2)

    • 時間加減法

    • #date_sub( date, INTERVAL expr type )
    • #DATE_ADD(date,INTERVAL expr type)

    • adddate (date,INTERVAL expr type ) ,timestampadd(interval, count, timestamp)

  • 例子

    • ############### #########兩個時間差############interval 可以是:############FRAC_SECOND 毫秒,SECOND 秒,MINUTE 分鐘,HOUR 小時############DAY 天,WEEK 星期,MONTH 月,QUARTER 季度,YEAR 年######################################################################################## ######兩個時間相減的相差時間,注意,需要是一樣的格式###########################兩個日期相減得相差天數,注意,兩個需為相同的格式############################datediff( date1, date2 ) ############timediff( time1 , time2 )###############TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)########## #####################date_sub( date, INTERVAL expr type )######################日期減去指定的時間間隔。 ############expr為正,則為減去這個時間間隔;expr為負,減去負數,等於加法############date 參數是合法的日期表達式。 expr 參數是您想要新增的時間間隔。 type可以參考下方############@date = '2017-09-09 09:09:09'###
    • ##HOUR#時date_sub( @date ,INTERVAL 2 HOUR)2017-09-09 DAY #天date_sub( @date ,INTERVAL 2 DAY )#2017-09- #WEEK週date_sub( @date ,INTERVAL 2 WEEK )2017-MONTH月date_sub( @date ,INTERVAL 2 MONTH )2017-QUARTER(季度,3個月)季度date_sub( @date ,INTERVAL 2 QUARTER )2017-YEAR年date_sub( @date ,INTERVAL 2 YEAR )SECOND_MICROSECOND表達式,從秒到十分之1秒date_sub( @date ,INTERVAL '2.2' SECOND_MICROSECOND )2017-09-09 09:09:MINUTE_MICROSECOND表達式,從分鐘到十分之一秒date_sub( @date ,INTERVAL '2:2.2' MINUTE_MICROSECOND )07:06.800000MINUTE_SECOND07:07HOUR_MICROSECOND##表達表達式,從小時到十分之一秒date_sub( @date ,INTERVAL '2:2:2.2' HOUR_MICROSECOND )2017-09-09 HOUR_SECOND表達式,小時到秒date_sub( @date ,INTERVAL  '2:2:2'  HOUR_SECOND )2017-09-09 #HOUR_MINUTE表達式,小時到分鐘date_sub( @date ,INTERVAL '2:2'  HOUR_MINUTE )2017-09-09 :09#DAY_MICROSECOND7:0907 07:07:06.80000007 07:07:07DAY_MINUTE#表達式,天到分鐘,date_sub( @date ,INTERVAL '2 2:2 ' DAY_MINUTE )2017-09-:09DAY_HOUR表達式,天到小時,date_sub( @date ,INTERVAL '2 2'  DAY_HOUR )2017 -09-:09:09#YEAR_MONTH表達式,年到月,
      Type 值               


      MICROSECOND 十分之一秒, ±n date_sub( @date ,INTERVAL 2 MICROSECOND ) 2017-09-09 09:09:08.999998
      #SECOND date_sub( @date ,INTERVAL 2 SECOND ) 2017-09-09 09:09:07
      MINUTE 分鐘 date_sub( @date ,INTERVAL 2 MINUTE ) 2017-09-09 09:07:09
      07:07:09
      07 09:09:09
      08-26 09:09:09
      07-09 09: 09:09
      03-09 09:09:09
      2015-09-09 09:09:09
      06.980000
      ##2017-09 -09 09:
      表達式,從分鐘到秒 date_sub( @date , INTERVAL '2:2' MINUTE_SECOND ) #2017-09-09 09:
      07:07:06.800000
      07:07:07
      07:07
      #DAY_MICROSECOND 表達式,天到十分之一秒, date_sub( @date ,INTERVAL '2 2:2:2.2' DAY_MICROSECOND )2017-09-
      DAY_SECOND 表達式,天到秒, date_sub( @date ,INTERVAL  ' 2 2:2:2'  DAY_SECOND )2017-09-
      DAY_MINUTE
      07 07:07
      07 07
      ####date_sub( @ date ,INTERVAL '2 2' YEAR_MONTH )#########2015-07###-09 09:09:09#############
  • DATE_ADD(date,INTERVAL expr type)

    • 日期增加指定的時間間隔,使用方法跟date_sub一樣

  • #adddate(date,INTERVAL expr type )

    • 日期增加n 天

    • #日增加指定的時間間隔,使用方法DATE_ADD  一樣

    • adddate(date,INTERVAL expr type )

    • adddate(date, n )

  • #timestampadd(interval, count, timestamp)

    • ##Year

    • #quarter

    • Month

    • #Day

    • Week

    • Hour

    • minute

    • #second

    • millisecond

    • #時間增加函數

3 時間轉換函數

  • from_unixtime(),unix_timestamp()

    • #前者將時間戳記轉換為日期時間格式,後者將日期時間格式轉換為時間戳

  • #makedate(year, day_of_year ),maketime(hour,minute,second)

    • #makedate 根據年份跟年份中的第幾天,轉換為日期

    • #maketime 根據小時分鐘秒,轉換為時間

  • #date(datetime),timestamp( date [,time])

    • 前者將日期時間格式轉換為日期格式(只含年月日),後者將日期轉換為日期時間格式

  • convert_tz(datetime, from_tz, to_tz)

    • 根據A 時區的時間,回傳在B時區的時間是多少

  • date_format(datetime,format),str_to_date(string,format)

    • ##前者將日期時間轉化為指定格式的文本,後者將文本轉化為制定格式的日期時間
    • 實際應用
    • SELECT NOW(),DATE_FORMAT(NOW(),'%Y-%m-%d') '%Y-%m-%d';

    • ##月

    • 時間模組

    • #小時
    • #分鐘
    • #%X     年,其中的星期日是週的第一天,4位,與%V 使用
    • %x     年,其中的星期一是周的第一天,4 位,與%v 使用
    • %Y     年,4 位
    • %y     年,2 位
    • #%b     縮寫月名
    • %c     月,數值############%M     月名##############.%M     月名####################################################################################################################################################' ###%m     月,數值(00-12)###########################%D     有英文字首的月中的天############%d     月的天,數值(00-31)############%e     月的天,數值(0-31)# ###########%j     年的天(001-366)###########################%T時間, 24-小時(hh:mm:ss)###
    • %r     時間,12-小時(hh:mm:ss AM 或PM)

    • #%H     小時(00-23)

    • %k     小時(0-23)

    • %h     小時( 01-12)

    • %I     小時(01-12) #%h跟%I,沒區別( 大寫的i )

    • # %l     小時(1-12) 小寫的L

    • %p     AM 或PM

    • #%i     分鐘,數值(00-59)
    • ##%S     秒(00-59)

    • %s     秒(00-59)

    • #%f    微秒

    • %a     縮寫星期名稱

    • %W     星期名稱,英文全名為Saturday

    • ## %w     週的天(0=星期日, 6=星期六,0-6)

    • %U     週(00-52) 星期日是一週的第一天

    • %u     週(00-52) 星期一是一週的第一天

    • %V     週(01-53) 星期日是一週的第一天,與%X 使用

    • %v     週(01-53) 星期一是一週的第一天,與%x 使用

    • 將string 轉換為日期格式,string 哪幾個字元是年月日時間,由format符合

    • ##時區轉換
    • datetime為from_zt的時區,傳回to_tz時區的時間
    • #時間戳記到轉換

    • 日期時間格式轉化為日期格式
    • #makedate 根據年份跟年份中的第幾天,轉換為日期

    • maketime 根據小時分鐘秒,轉換為時間
    • #將時間轉換為時間戳

    • 將時間戳記轉換為時間

  • from_unixtime
    • #unix_timestamp

    • makedate (year, day_of_year),maketime(hour,minute,second)

    • date(datetime)
  • ##timestamp(date),timestamp(date,time)

    • #convert_tz(datetime,from_tz,to_tz)

    • #str_to_date(string,format)

      #############date_format############################################################# #####4 取得部分函數############### 取得第幾天#####################to_days (datetime ),dayofyear(datetime ),dayofmonth(datetime)#######################todays#######傳回從'0000-00 -00' 到datetime之間隔了多少天###################dayofyear######,返回datetime 這一天是一年中的第幾天## ################dayofmonth######,返回datetime 這一天是一個月中的第幾天############# ################秒轉換######################time_to_sec(time),sec_to_time(number)## ################前者根據時間轉換為秒數,後者根據秒數轉換為時間###

以上是MySQL中關於日期函數總計的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn