MySQL的Data_ADD函數與日期格局化函數解釋。本站提示廣大學習愛好者:(MySQL的Data_ADD函數與日期格局化函數解釋)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL的Data_ADD函數與日期格局化函數解釋正文
這些函數履行日期運算。 date 是一個 DATETIME 或DATE值,用來指定肇端時光。 expr 是一個表達式,用來指定從肇端日期添加或減去的時光距離值。 Expr是一個字符串;關於負值的時光距離,它可以以一個 ‘-'開首。 type 為症結詞,它指導了表達式被說明的方法。
症結詞INTERVA及 type 分類符均不辨別年夜小寫。
以下表顯示了type 和expr 參數的關系:
type 值
預期的 expr 格局
MICROSECOND
MICROSECONDS
SECOND
SECONDS
MINUTE
MINUTES
HOUR
HOURS
DAY
DAYS
WEEK
WEEKS
MONTH
MONTHS
QUARTER
QUARTERS
YEAR
YEARS
SECOND_MICROSECOND
'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND
'MINUTES.MICROSECONDS'
MINUTE_SECOND
'MINUTES:SECONDS'
HOUR_MICROSECOND
'HOURS.MICROSECONDS'
HOUR_SECOND
'HOURS:MINUTES:SECONDS'
HOUR_MINUTE
'HOURS:MINUTES'
DAY_MICROSECOND
'DAYS.MICROSECONDS'
DAY_SECOND
'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE
'DAYS HOURS:MINUTES'
DAY_HOUR
'DAYS HOURS'
YEAR_MONTH
'YEARS-MONTHS'
MySQL 許可任何expr 格局中的標點分隔符。表中所顯示的是建議的 分隔符。若 date 參數是一個 DATE 值,而你的盤算只會包含 YEAR、MONTH和DAY部門(即, 沒有時光部門), 其成果是一個DATE 值。不然,成果將是一個 DATETIME值。
若位於另外一真個表達式是一個日期或日期時光值 , 則INTERVAL expr type只許可在 + 操作符的兩頭。關於 –操作符, INTERVAL expr type 只許可在其右端,緣由是從一個時光距離中提取一個日期或日期時光值是毫有意義的。 (見上面的例子)。
mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;
-> '1998-01-01 00:00:00'
mysql> SELECT INTERVAL 1 DAY + '1997-12-31';
-> '1998-01-01'
mysql> SELECT '1998-01-01' - INTERVAL 1 SECOND;
-> '1997-12-31 23:59:59'
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 SECOND);
-> '1998-01-01 00:00:00'
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 DAY);
-> '1998-01-01 23:59:59'
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
-> '1998-01-01 00:01:00'
mysql> SELECT DATE_SUB('1998-01-01 00:00:00',
-> INTERVAL '1 1:1:1' DAY_SECOND);
-> '1997-12-30 22:58:59'
mysql> SELECT DATE_ADD('1998-01-01 00:00:00',
-> INTERVAL '-1 10' DAY_HOUR);
-> '1997-12-30 14:00:00'
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'
mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002',
-> INTERVAL '1.999999' SECOND_MICROSECOND);
-> '1993-01-01 00:00:01.000001'
若你指定了一個過於短的時光距離值 (不包含type 症結詞所預期的一切時光距離部門), MySQL 假定你曾經省去了時光距離值的最左部門。 例如,你指定了一品種型的DAY_SECOND, expr 的值預期應該具有天、 小時、分鐘和秒部門。若你指定了一個相似 '1:10'的值, MySQL 假定天和小時部門不存在,那末這個值代表分和秒。換言之, '1:10' DAY_SECOND 被說明為相當於 '1:10' MINUTE_SECOND。這相當於 MySQL將TIME 值說明為所消耗的時光而不是日時的說明方法。
假設你對一個日期值添加或減去一些含有時光部門的內容,則成果主動轉化為一個日期時光值:
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY);
-> '1999-01-02'
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
-> '1999-01-01 01:00:00'
假設你應用了格局嚴重毛病的日期,則成果為 NULL。假設你添加了 MONTH、YEAR_MONTH或YEAR ,而成果日期中有一天的日期年夜於添加的月份的日期最年夜限制,則這個日期主動被調劑為添加月份的最年夜日期:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
-> '1998-02-28'
依據format 字符串支配date 值的格局。
以下解釋符可用在 format 字符串中:
解釋符
解釋
%a
任務日的縮寫稱號 (Sun..Sat)
%b
月份的縮寫稱號 (Jan..Dec)
%c
月份,數字情勢(0..12)
%D
帶有英語後綴的該月日期 (0th, 1st, 2nd, 3rd, ...)
%d
該月日期, 數字情勢 (00..31)
%e
該月日期, 數字情勢(0..31)
%f
微秒 (000000..999999)
%H
小時(00..23)
%h
小時(01..12)
%I
小時 (01..12)
%i
分鐘,數字情勢 (00..59)
%j
一年中的天數 (001..366)
%k
小時 (0..23)
%l
小時 (1..12)
%M
月份稱號 (January..December)
%m
月份, 數字情勢 (00..12)
%p
上午(AM)或下晝( PM)
%r
時光 , 12小時制 (小時hh:分鐘mm:秒數ss 後加 AM或PM)
%S
秒 (00..59)
%s
秒 (00..59)
%T
時光 , 24小時制 (小時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位數)
%%
‘%'文字字符
一切其它字符都被復制到成果中,無需作出說明。
留意, ‘%'字符請求在格局指定符之前。
月份和日期解釋符的規模從零開端,緣由是 MySQL許可存儲諸如 '2004-00-00'的不完整日期.
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
'%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
-> '1998 52'