新聞中心
下面的例子使用了時間函數(shù)。以下詢問選擇了最近的 30天內(nèi)所有帶有date_col 值的記錄:

創(chuàng)新互聯(lián)建站是專業(yè)的珙縣網(wǎng)站建設(shè)公司,珙縣接單;提供成都網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行珙縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
|
注意,這個詢問也能選擇將來的日期記錄。
用于日期值的函數(shù)通常會接受時間日期值而忽略時間部分。而用于時間值的函數(shù)通常接受時間日期值而忽略日期部分。
返回各自當(dāng)前日期或時間的函數(shù)在每次詢問執(zhí)行開始時計算一次。這意味著在一個單一詢問中,對諸如NOW() 的函數(shù)多次訪問總是會得到同樣的結(jié)果(未達(dá)到我們的目的,單一詢問也包括對存儲程序或觸發(fā)器和被該程序/觸發(fā)器調(diào)用的所有子程序的調(diào)用 )。這項原則也適用于 CURDATE()、 CURTIME()、 UTC_DATE()、 UTC_TIME()、UTC_TIMESTAMP(),以及所有和它們意義相同的函數(shù)。
CURRENT_TIMESTAMP()、 CURRENT_TIME()、 CURRENT_DATE()以及FROM_UNIXTIME()函數(shù)返回連接當(dāng)前時區(qū)內(nèi)的值,這個值可用作time_zone系統(tǒng)變量的值。此外, UNIX_TIMESTAMP() 假設(shè)其參數(shù)為一個當(dāng)前時區(qū)的時間日期值。
以下函數(shù)的論述中返回值的范圍會請求完全日期。 若一個日期為“零” 值,或者是一個諸如'2001-11-00'之類的不完全日期, 提取部分日期值的函數(shù)可能會返回 0。 例如, DAYOFMONTH('2001-11-00') 會返回0。
ADDDATE(date,INTERVAL expr type) ADDDATE(expr,days)
當(dāng)被第二個參數(shù)的INTERVAL格式激活后, ADDDATE()就是DATE_ADD()的同義詞。相關(guān)函數(shù)SUBDATE() 則是DATE_SUB()的同義詞。對于INTERVAL參數(shù)上的信息 ,請參見關(guān)于DATE_ADD()的論述。
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
|
若 days 參數(shù)只是整數(shù)值,則 MySQL 5.1將其作為天數(shù)值添加至 expr。
mysql> SELECT ADDDATE('1998-01-02', 31);
|
◆ ADDTIME(expr,expr2)
ADDTIME()將 expr2添加至expr 然后返回結(jié)果。 expr 是一個時間或時間日期表達(dá)式,而expr2 是一個時間表達(dá)式。
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999',
|
◆ CONVERT_TZ(dt,from_tz,to_tz)
CONVERT_TZ() 將時間日期值dt 從from_tz 給出的時區(qū)轉(zhuǎn)到to_tz給出的時區(qū),然后返回結(jié)果值。
在從若from_tz 到UTC的轉(zhuǎn)化過程中,該值超出 TIMESTAMP 類型的被支持范圍,那么轉(zhuǎn)化不會發(fā)生。
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
|
注釋:若要使用諸如 'MET'或 'Europe/Moscow'之類的指定時間區(qū),首先要設(shè)置正確的時區(qū)表。
◆ CURDATE()
將當(dāng)前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具體格式根據(jù)函數(shù)用在字符串或是數(shù)字語境中而定。
mysql> SELECT CURDATE(); |
◆ CURRENT_DATE CURRENT_DATE()
CURRENT_DATE和CURRENT_DATE()是的同義詞.
◆ CURTIME()
將當(dāng)前時間以'HH:MM:SS'或 HHMMSS 的格式返回, 具體格式根據(jù)函數(shù)用在字符串或是數(shù)字語境中而定。
mysql> SELECT CURTIME(); |
◆ CURRENT_TIME, CURRENT_TIME()
CURRENT_TIME 和CURRENT_TIME() 是CURTIME()的同義詞。
◆ CURRENT_TIMESTAMP, CURRENT_TIMESTAMP()
CURRENT_TIMESTAMP和 CURRENT_TIMESTAMP()是NOW()的同義詞。
◆ DATE(expr)
提取日期或時間日期表達(dá)式expr中的日期部分。
mysql> SELECT DATE('2003-12-31 01:02:03');
|
◆ DATEDIFF(expr,expr2)
DATEDIFF() 返回起始時間 expr和結(jié)束時間expr2之間的天數(shù)。Expr和expr2 為日期或 date-and-time 表達(dá)式。計算中只用到這些值的日期部分。
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
|
◆ DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)
這些函數(shù)執(zhí)行日期運算。 date 是一個 DATETIME 或DATE值,用來指定起始時間。 expr 是一個表達(dá)式,用來指定從起始日期添加或減去的時間間隔值。 Expr是一個字符串;對于負(fù)值的時間間隔,它可以以一個 ‘-’開頭。 type 為關(guān)鍵詞,它指示了表達(dá)式被解釋的方式。
關(guān)鍵詞INTERVA及 type 分類符均不區(qū)分大小寫。
以下表顯示了type 和expr 參數(shù)的關(guān)系:
MySQL 允許任何expr 格式中的標(biāo)點分隔符。表中所顯示的是建議的 分隔符。若 date 參數(shù)是一個 DATE 值,而你的計算只會包括 YEAR、MONTH和DAY部分(即, 沒有時間部分), 其結(jié)果是一個DATE 值。否則,結(jié)果將是一個 DATETIME值。
若位于另一端的表達(dá)式是一個日期或日期時間值 , 則INTERVAL expr type只允許在 + 操作符的兩端。對于 –操作符, INTERVAL expr type 只允許在其右端,原因是從一個時間間隔中提取一個日期或日期時間值是毫無意義的。 (見下面的例子)。
mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND; |
#p#
若你指定了一個過于短的時間間隔值 (不包括type 關(guān)鍵詞所預(yù)期的所有時間間隔部分), MySQL 假定你已經(jīng)省去了時間間隔值的最左部分。 例如,你指定了一種類型的DAY_SECOND, expr 的值預(yù)期應(yīng)當(dāng)具有天、 小時、分鐘和秒部分。若你指定了一個類似 '1:10'的值, MySQL 假定天和小時部分不存在,那么這個值代表分和秒。換言之, '1:10' DAY_SECOND 被解釋為相當(dāng)于 '1:10' MINUTE_SECOND。這相當(dāng)于 MySQL將TIME 值解釋為所耗費的時間而不是日時的解釋方式。
假如你對一個日期值添加或減去一些含有時間部分的內(nèi)容,則結(jié)果自動轉(zhuǎn)化為一個日期時間值:
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY);
|
假如你使用了格式嚴(yán)重錯誤的日期,則結(jié)果為 NULL。假如你添加了 MONTH、YEAR_MONTH或YEAR ,而結(jié)果日期中有一天的日期大于添加的月份的日期***限度,則這個日期自動被調(diào)整為添加月份的***日期:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
|
◆ DATE_FORMAT(date,format)
根據(jù)format 字符串安排date 值的格式。
以下說明符可用在 format 字符串中:
說明符 | 說明 |
%a | 工作日的縮寫名稱 (Sun..Sat) |
%b | 月份的縮寫名稱 (Jan..Dec) |
%c | 月份,數(shù)字形式(0..12) |
%D | 帶有英語后綴的該月日期 (0th, 1st, 2nd, 3rd, ...) |
%d | 該月日期, 數(shù)字形式 (00..31) |
%e | 該月日期, 數(shù)字形式(0..31) |
%f | 微秒 (000000..999999) |
%H | 小時(00..23) |
%h | 小時(01..12) |
%I | 小時 (01..12) |
%i | 分鐘,數(shù)字形式 (00..59) |
%j | 一年中的天數(shù) (001..366) |
%k | 小時 (0..23) |
%l | 小時 (1..12) |
%M | 月份名稱 (January..December) |
%m | 月份, 數(shù)字形式 (00..12) |
%p | 上午(AM)或下午( PM) |
%r | 時間 , 12小時制 (小時hh:分鐘mm:秒數(shù)ss 后加 AM或PM) |
%S | 秒 (00..59) |
%s | 秒 (00..59) |
%T | 時間 , 24小時制 (小時hh:分鐘mm:秒數(shù)ss) |
%U | 周 (00..53), 其中周日為每周的***天 |
%u | 周 (00..53), 其中周一為每周的***天 |
%V | 周 (01..53), 其中周日為每周的***天 ; 和 %X同時使用 |
%v | 周 (01..53), 其中周一為每周的***天 ; 和 %x同時使用 |
%W | 工作日名稱 (周日..周六) |
%w | 一周中的每日 (0=周日..6=周六) |
%X | 該周的年份,其中周日為每周的***天, 數(shù)字形式,4位數(shù);和%V同時使用 |
%x | 該周的年份,其中周一為每周的***天, 數(shù)字形式,4位數(shù);和%v同時使用 |
%Y | 年份, 數(shù)字形式,4位數(shù) |
%y | 年份, 數(shù)字形式 (2位數(shù)) |
%% | ‘%’文字字符 |
所有其它字符都被復(fù)制到結(jié)果中,無需作出解釋。
注意:‘%’字符要求在格式指定符之前。
月份和日期說明符的范圍從零開始,原因是 MySQL允許存儲諸如 '2004-00-00'的不完全日期.
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
|
◆ DAY(date)
DAY() 和DAYOFMONTH()的意義相同。
◆ DAYNAME(date)
返回date 對應(yīng)的工作日名稱。
mysql> SELECT DAYNAME('1998-02-05');
|
◆ DAYOFMONTH(date)
返回date 對應(yīng)的該月日期,范圍是從 1到31。
mysql> SELECT DAYOFMONTH('1998-02-03');
|
◆ DAYOFWEEK(date)
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)對應(yīng)的工作日索引。這些索引值符合 ODBC標(biāo)準(zhǔn)。
mysql> SELECT DAYOFWEEK('1998-02-03');
|
◆ DAYOFYEAR(date)
返回date 對應(yīng)的一年中的天數(shù),范圍是從 1到366。
mysql> SELECT DAYOFYEAR('1998-02-03');
|
◆ EXTRACT(type FROM date)
EXTRACT()函數(shù)所使用的時間間隔類型說明符同 DATE_ADD()或DATE_SUB()的相同,但它從日期中提取其部分,而不是執(zhí)行日期運算。
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02'); |
◆ FROM_DAYS(N)
給定一個天數(shù) N, 返回一個DATE值。
mysql> SELECT FROM_DAYS(729669); |
使用 FROM_DAYS()處理古老日期時,務(wù)必謹(jǐn)慎。他不用于處理陽歷出現(xiàn)前的日期(1582)。請參見12.6節(jié),“MySQL使用什么日歷?”。
◆ FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format)
返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的unix_timestamp參數(shù)表示,具體格式取決于該函數(shù)是否用在字符串中或是數(shù)字語境中。
若format 已經(jīng)給出,則結(jié)果的格式是根據(jù)format 字符串而定。 format 可以包含同DATE_FORMAT() 函數(shù)輸入項列表中相同的說明符。
mysql> SELECT FROM_UNIXTIME(875996580); |
◆ GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')
返回一個格式字符串。這個函數(shù)在同DATE_FORMAT() 及STR_TO_DATE()函數(shù)結(jié)合時很有用。
***個參數(shù)的3個可能值和第二個參數(shù)的5個可能值產(chǎn)生 15 個可能格式字符串 (對于使用的說明符,請參見DATE_FORMAT()函數(shù)說明表 )。
ISO 格式為ISO 9075, 而非ISO 8601.
也可以使用TIMESTAMP, 這時GET_FORMAT()的返回值和DATETIME相同。
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
|
#p#
◆ HOUR(time)
返回time 對應(yīng)的小時數(shù)。對于日時值的返回值范圍是從 0 到 23 。
mysql> SELECT HOUR('10:05:03');
|
然而, TIME 值的范圍實際上非常大, 所以HOUR可以返回大于23的值。
mysql> SELECT HOUR('272:59:59');
|
◆ LAST_DAY(date)
獲取一個日期或日期時間值,返回該月***一天對應(yīng)的值。若參數(shù)無效,則返回NULL。
mysql> SELECT LAST_DAY('2003-02-05');
|
◆ LOCALTIME, LOCALTIME()
LOCALTIME 及 LOCALTIME()和NOW()具有相同意義。
◆ LOCALTIMESTAMP, LOCALTIMESTAMP()
LOCALTIMESTAMP和LOCALTIMESTAMP()和NOW()具有相同意義。
◆ MAKEDATE(year,dayofyear)
給出年份值和一年中的天數(shù)值,返回一個日期。dayofyear 必須大于 0 ,否則結(jié)果為 NULL。
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32); |
◆ MAKETIME(hour,minute,second)
返回由hour、 minute和second 參數(shù)計算得出的時間值。
mysql> SELECT MAKETIME(12,15,30); |
◆ MICROSECOND(expr)
從時間或日期時間表達(dá)式expr返回微秒值,其數(shù)字范圍從 0到 999999。
mysql> SELECT MICROSECOND('12:00:00.123456');
|
◆ MINUTE(time)
返回 time 對應(yīng)的分鐘數(shù),范圍是從 0 到 59。
mysql> SELECT MINUTE('98-02-03 10:05:03');
|
◆ MONTH(date)
返回date 對應(yīng)的月份,范圍時從 1 到 12。
mysql> SELECT MONTH('1998-02-03');
|
◆ MONTHNAME(date)
返回date 對應(yīng)月份的全名。
mysql> SELECT MONTHNAME('1998-02-05');
|
◆ NOW()
返回當(dāng)前日期和時間值,其格式為 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具體格式取決于該函數(shù)是否用在字符串中或數(shù)字語境中。
mysql> SELECT NOW(); |
在一個存儲程序或觸發(fā)器內(nèi), NOW() 返回一個常數(shù)時間,該常數(shù)指示了該程序或觸發(fā)語句開始執(zhí)行的時間。這同SYSDATE()的運行有所不同。
◆ PERIOD_ADD(P,N)
添加 N 個月至周期P (格式為YYMM 或YYYYMM),返回值的格式為 YYYYMM。注意周期參數(shù) P 不是日期值。
mysql> SELECT PERIOD_ADD(9801,2); |
◆ PERIOD_DIFF(P1,P2)
返回周期P1和 P2 之間的月份數(shù)。P1 和P2 的格式應(yīng)該為YYMM或YYYYMM。注意周期參數(shù) P1和P2 不是日期值。
mysql> SELECT PERIOD_DIFF(9802,199703); |
◆ QUARTER(date)
返回date 對應(yīng)的一年中的季度值,范圍是從 1到 4。
mysql> SELECT QUARTER('98-04-01');
|
◆ SECOND(time)
返回time 對應(yīng)的秒數(shù), 范圍是從 0到59。
mysql> SELECT SECOND('10:05:03');
|
◆ SEC_TO_TIME(seconds)
返回被轉(zhuǎn)化為小時、 分鐘和秒數(shù)的seconds參數(shù)值, 其格式為 'HH:MM:SS' 或HHMMSS,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境中而定。
mysql> SELECT SEC_TO_TIME(2378); |
◆ STR_TO_DATE(str,format)
這是DATE_FORMAT() 函數(shù)的倒轉(zhuǎn)。它獲取一個字符串 str 和一個格式字符串format。若格式字符串包含日期和時間部分,則 STR_TO_DATE()返回一個 DATETIME 值, 若該字符串只包含日期部分或時間部分,則返回一個 DATE 或TIME值。
str所包含的日期、時間或日期時間值應(yīng)該在format指示的格式中被給定。對于可用在format中的說明符,請參見DATE_FORMAT() 函數(shù)說明表。 所有其它的字符被逐字獲取,因此不會被解釋。若 str 包含一個非法日期、時間或日期時間值,則 STR_TO_DATE()返回NULL。同時,一個非法值會引起警告。
mysql> SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y');
|
◆ SUBDATE(date,INTERVAL expr type) SUBDATE(expr,days)
當(dāng)被第二個參數(shù)的 INTERVAL型式調(diào)用時, SUBDATE()和DATE_SUB()的意義相同。對于有關(guān)INTERVAL參數(shù)的信息, 見有關(guān) DATE_ADD()的討論。
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
|
第二個形式允許對days使用整數(shù)值。在這些情況下,它被算作由日期或日期時間表達(dá)式 expr中提取的天數(shù)。
mysql> SELECT SUBDATE('1998-01-02 12:00:00', 31);
|
注意不能使用格式 "%X%V" 來將一個 year-week 字符串轉(zhuǎn)化為一個日期,原因是當(dāng)一個星期跨越一個月份界限時,一個年和星期的組合不能標(biāo)示一個唯一的年和月份。若要將year-week轉(zhuǎn)化為一個日期,則也應(yīng)指定具體工作日:
mysql> select str_to_date('200442 Monday', '%X%V %W');
|
◆ SUBTIME(expr,expr2)
SUBTIME()從expr 中提取expr2 ,然后返回結(jié)果。expr 是一個時間或日期時間表達(dá)式,而xpr2 是一個時間表達(dá)式。
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
|
◆ SYSDATE()
返回當(dāng)前日期和時間值,格式為'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS, 具體格式根據(jù)函數(shù)是否用在字符串或數(shù)字語境而定。
在一個存儲程序或觸發(fā)器中, SYSDATE()返回其執(zhí)行的時間, 而非存儲成都或觸發(fā)語句開始執(zhí)行的時間。這個NOW()的運作有所不同。
#p#
◆ TIME(expr)
提取一個時間或日期時間表達(dá)式的時間部分,并將其以字符串形式返回。
mysql> SELECT TIME('2003-12-31 01:02:03');
|
◆ TIMEDIFF(expr,expr2)
TIMEDIFF() 返回起始時間 expr 和結(jié)束時間expr2 之間的時間。 expr 和expr2 為時間或 date-and-time 表達(dá)式,兩個的類型必須一樣。
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
|
◆ TIMESTAMP(expr) , TIMESTAMP(expr,expr2)
對于一個單參數(shù),該函數(shù)將日期或日期時間表達(dá)式 expr 作為日期時間值返回.對于兩個參數(shù), 它將時間表達(dá)式 expr2 添加到日期或日期時間表達(dá)式 expr 中,將theresult作為日期時間值返回。
mysql> SELECT TIMESTAMP('2003-12-31');
|
◆ TIMESTAMPADD(interval,int_expr,datetime_expr)
將整型表達(dá)式int_expr 添加到日期或日期時間表達(dá)式 datetime_expr中。 int_expr 的單位被時間間隔參數(shù)給定,該參數(shù)必須是以下值的其中一個: FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR。
可使用所顯示的關(guān)鍵詞指定Interval值,或使用SQL_TSI_前綴。例如, DAY或SQL_TSI_DAY 都是正確的。
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02'); |
◆ TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期時間表達(dá)式datetime_expr1 和datetime_expr2the 之間的整數(shù)差。其結(jié)果的單位由interval 參數(shù)給出。interval 的法定值同TIMESTAMPADD()函數(shù)說明中所列出的相同。
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01'); |
◆ TIME_FORMAT(time,format)
其使用和 DATE_FORMAT()函數(shù)相同, 然而format 字符串可能僅會包含處理小時、分鐘和秒的格式說明符。其它說明符產(chǎn)生一個NULL值或0。
若time value包含一個大于23的小時部分,則 %H 和 %k 小時格式說明符會產(chǎn)生一個大于0..23的通常范圍的值。另一個小時格式說明符產(chǎn)生小時值模數(shù)12。
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
|
◆ TIME_TO_SEC(time)
返回已轉(zhuǎn)化為秒的time參數(shù)。
mysql> SELECT TIME_TO_SEC('22:23:00');
|
◆ TO_DAYS(date)
給定一個日期date, 返回一個天數(shù) (從年份0開始的天數(shù) )。
mysql> SELECT TO_DAYS(950501); |
TO_DAYS() 不用于陽歷出現(xiàn)(1582)前的值,原因是當(dāng)日歷改變時,遺失的日期不會被考慮在內(nèi)。
請記住, MySQL使用“日期和時間類型”中的規(guī)則將日期中的二位數(shù)年份值轉(zhuǎn)化為四位。例如, '1997-10-07'和 '97-10-07' 被視為同樣的日期:
mysql> SELECT TO_DAYS('1997-10-07'), TO_DAYS('97-10-07');
|
對于1582 年之前的日期(或許在其它地區(qū)為下一年 ), 該函數(shù)的結(jié)果實不可靠的。
◆ UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若無參數(shù)調(diào)用,則返回一個Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒數(shù)) 作為無符號整數(shù)。若用date 來調(diào)用UNIX_TIMESTAMP(),它會將參數(shù)值以'1970-01-01 00:00:00' GMT后的秒數(shù)的形式返回。date 可以是一個DATE 字符串、一個 DATETIME字符串、一個 TIMESTAMP或一個當(dāng)?shù)貢r間的YYMMDD 或YYYMMDD格式的數(shù)字。
mysql> SELECT UNIX_TIMESTAMP(); |
當(dāng) UNIX_TIMESTAMP被用在 TIMESTAMP列時, 函數(shù)直接返回內(nèi)部時戳值, 而不進(jìn)行任何隱含的 “string-to-Unix-timestamp”轉(zhuǎn)化。假如你向UNIX_TIMESTAMP()傳遞一個溢出日期,它會返回 0,但請注意只有基本范圍檢查會被履行 (年份從1970 到 2037, 月份從01到12,日期從 01 到31)。
假如你想要減去 UNIX_TIMESTAMP() 列, 你或許希望刪去帶符號整數(shù)的結(jié)果。
◆ UTC_DATE, UTC_DATE()
返回當(dāng)前 UTC日期值,其格式為 'YYYY-MM-DD' 或 YYYYMMDD,具體格式取決于函數(shù)是否用在字符串或數(shù)字語境中。
mysql> SELECT UTC_DATE(), UTC_DATE() + 0; |
◆ UTC_TIME, UTC_TIME()
返回當(dāng)前 UTC 值,其格式為 'HH:MM:SS' 或HHMMSS,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境而定。
mysql> SELECT UTC_TIME(), UTC_TIME() + 0; |
◆ UTC_TIMESTAMP, UTC_TIMESTAMP()
返回當(dāng)前UTC日期及時間值,格式為 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境而定。
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0; |
◆ WEEK(date[,mode])
該函數(shù)返回date 對應(yīng)的星期數(shù)。WEEK() 的雙參數(shù)形式允許你指定該星期是否起始于周日或周一, 以及返回值的范圍是否為從0 到53 或從1 到53。若 mode參數(shù)被省略,則使用default_week_format系統(tǒng)自變量的值。請參見5.3.3節(jié),“服務(wù)器系統(tǒng)變量”。
以下表說明了mode 參數(shù)的工作過程:
mysql> SELECT WEEK('1998-02-20');
|
注意,假如有一個日期位于前一年的***一周, 若你不使用2、3、6或7作為mode 參數(shù)選擇,則MySQL返回 0:
mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
|
有人或許會提出意見,認(rèn)為 MySQL 對于WEEK() 函數(shù)應(yīng)該返回 52 ,原因是給定的日期實際上發(fā)生在1999年的第52周。我們決定返回0作為代替的原因是我們希望該函數(shù)能返回“給定年份的星期數(shù)”。這使得WEEK() 函數(shù)在同其它從日期中抽取日期部分的函數(shù)結(jié)合時的使用更加可靠。
假如你更希望所計算的關(guān)于年份的結(jié)果包括給定日期所在周的***天,則應(yīng)使用 0、2、5或 7 作為mode參數(shù)選擇。
mysql> SELECT WEEK('2000-01-01',2);
|
作為選擇,可使用 YEARWEEK()函數(shù):
mysql> SELECT YEARWEEK('2000-01-01');
|
◆ WEEKDAY(date)
返回date (0 = 周一, 1 = 周二, ... 6 = 周日)對應(yīng)的工作日索引 weekday index for
mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
|
◆ WEEKOFYEAR(date)
將該日期的陽歷周以數(shù)字形式返回,范圍是從1到53。它是一個兼容度函數(shù),相當(dāng)于WEEK(date,3)。
mysql> SELECT WEEKOFYEAR('1998-02-20');
|
◆ YEAR(date)
返回date 對應(yīng)的年份,范圍是從1000到9999。
mysql> SELECT YEAR('98-02-03');
|
◆ YEARWEEK(date), YEARWEEK(date,start)
返回一個日期對應(yīng)的年或周。start參數(shù)的工作同 start參數(shù)對 WEEK()的工作相同。結(jié)果中的年份可以和該年的***周和***一周對應(yīng)的日期參數(shù)有所不同。
mysql> SELECT YEARWEEK('1987-01-01');
|
注意,周數(shù)和WEEK()函數(shù)隊可選參數(shù)0或 1可能會返回的(0) w有所不同,原因是此時 WEEK() 返回給定年份的語境中的周。
新聞名稱:MySQL內(nèi)置函數(shù)中的日期和時間函數(shù)詳解
本文URL:http://www.dlmjj.cn/article/djddode.html


咨詢
建站咨詢
