国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql的日期和時間函數大全

mysql的日期和時間函數大全

2019-10-21 15:05mysql技術網 Mysql

mysql的日期和時間函數 這里是一個使用日期函數的例子。下面的查詢選擇所有 date_col 值在最后 30 天內的記錄。

mysql> SELECT something FROM tbl_name 
           WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; 

DAYOFWEEK(date)  
返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的標準。  
mysql> SELECT DAYOFWEEK('1998-02-03'); 
        -> 3 

WEEKDAY(date)  
返回 date 的星期索引(0 = Monday, 1 = Tuesday, ... 6 = Sunday):  
mysql> SELECT WEEKDAY('1998-02-03 22:23:00'); 
        -> 1 
mysql> SELECT WEEKDAY('1997-11-05'); 
        -> 2 

DAYOFMONTH(date)  
返回 date 是一月中的第幾天,范圍為 1 到 31:  
mysql> SELECT DAYOFMONTH('1998-02-03'); 
        -> 3 

DAYOFYEAR(date)  
返回 date 是一年中的第幾天,范圍為 1 到 366:  
mysql> SELECT DAYOFYEAR('1998-02-03'); 
        -> 34 

MONTH(date)  
返回 date 中的月份,范圍為 1 到 12:  
mysql> SELECT MONTH('1998-02-03'); 
        -> 2 

DAYNAME(date)  
返回 date 的星期名:  
mysql> SELECT DAYNAME("1998-02-05"); 
        -> 'Thursday' 

MONTHNAME(date)  
返回 date 的月份名:  
mysql> SELECT MONTHNAME("1998-02-05"); 
        -> 'February' 

QUARTER(date)  
返回 date 在一年中的季度,范圍為 1 到 4:  
mysql> SELECT QUARTER('98-04-01'); 
        -> 2 

WEEK(date)  
WEEK(date,first)  
對于星期日是一周中的第一天的場合,如果函數只有一個參數調用,返回 date 為一年的第幾周,返回值范圍為 0 到 53 (是的,可能有第 53 周的開始)。兩個參數形式的 WEEK() 允許你指定一周是否以星期日或星期一開始,以及返回值為 0-53 還是 1-52。 這里的一個表顯示第二個參數是如何工作的: 值  含義   
0  一周以星期日開始,返回值范圍為 0-53   
1  一周以星期一開始,返回值范圍為 0-53   
2  一周以星期日開始,返回值范圍為 1-53   
3  一周以星期一開始,返回值范圍為 1-53 (ISO 8601)   

mysql> SELECT WEEK('1998-02-20'); 
        -> 7 
mysql> SELECT WEEK('1998-02-20',0); 
        -> 7 
mysql> SELECT WEEK('1998-02-20',1); 
        -> 8 
mysql> SELECT WEEK('1998-12-31',1); 
        -> 53 

注意,在版本 4.0 中,WEEK(#,0) 被更改為匹配 USA 歷法。 注意,如果一周是上一年的最后一周,當你沒有使用 2 或 3 做為可選參數時,MySQL 將返回 0:  
mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0); 
        -> 2000, 0 
mysql> SELECT WEEK('2000-01-01',2); 
        -> 52 

你可能會爭辯說,當給定的日期值實際上是 1999 年的第 52 周的一部分時,MySQL 對 WEEK() 函數應該返回 52。我們決定返回 0 ,是因為我們希望該函數返回“在指定年份中是第幾周”。當與其它的提取日期值中的月日值的函數結合使用時,這使得 WEEK() 函數的用法可靠。 如果你更希望能得到恰當的年-周值,那么你應該使用參數 2 或 3 做為可選參數,或者使用函數 YEARWEEK() :  
mysql> SELECT YEARWEEK('2000-01-01'); 
        -> 199952 
mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2); 
        -> 52 

YEAR(date)  
返回 date 的年份,范圍為 1000 到 9999:  
mysql> SELECT YEAR('98-02-03'); 
        -> 1998 

YEARWEEK(date)  
YEARWEEK(date,first)  
返回一個日期值是的哪一年的哪一周。第二個參數的形式與作用完全與 WEEK() 的第二個參數一致。注意,對于給定的日期參數是一年的第一周或最后一周的,返回的年份值可能與日期參數給出的年份不一致:  
mysql> SELECT YEARWEEK('1987-01-01'); 
        -> 198653 

注意,對于可選參數 0 或 1,周值的返回值不同于 WEEK() 函數所返回值(0), WEEK() 根據給定的年語境返回周值。  
HOUR(time)  
返回 time 的小時值,范圍為 0 到 23:  
mysql> SELECT HOUR('10:05:03'); 
        -> 10 

MINUTE(time)  
返回 time 的分鐘值,范圍為 0 到 59:  
mysql> SELECT MINUTE('98-02-03 10:05:03'); 
        -> 5 

SECOND(time)  
返回 time 的秒值,范圍為 0 到 59:  
mysql> SELECT SECOND('10:05:03'); 
        -> 3 

PERIOD_ADD(P,N)  
增加 N 個月到時期 P(格式為 YYMM 或 YYYYMM)中。以 YYYYMM 格式返回值。 注意,期間參數 P 不是 一個日期值:  
mysql> SELECT PERIOD_ADD(9801,2); 
        -> 199803 

PERIOD_DIFF(P1,P2)  
返回時期 P1 和 P2 之間的月數。P1 和 P2 應該以 YYMM 或 YYYYMM 指定。 注意,時期參數 P1 和 P2 不是 日期值:  
mysql> SELECT PERIOD_DIFF(9802,199703); 
        -> 11 

DATE_ADD(date,INTERVAL expr type)  
DATE_SUB(date,INTERVAL expr type)  
ADDDATE(date,INTERVAL expr type)  
SUBDATE(date,INTERVAL expr type)  
這些函數執行日期的算術運算。ADDDATE() 和 SUBDATE() 分別是 DATE_ADD() 和 DATE_SUB() 的同義詞。 在 MySQL 3.23 中,如果表達式的右邊是一個日期值或一個日期時間型字段,你可以使用 + 和 - 代替 DATE_ADD() 和 DATE_SUB()(示例如下)。 參數 date 是一個 DATETIME 或 DATE 值,指定一個日期的開始。expr 是一個表達式,指定從開始日期上增加還是減去間隔值。expr 是一個字符串;它可以以一個 “-” 領頭表示一個負的間隔值。type 是一個關鍵詞,它標志著表達式以何格式被解釋。 下表顯示 type 和 expr 參數是如何關聯的: type 值  expr 期望的格式   
SECOND  SECONDS   
MINUTE  MINUTES   
HOUR  HOURS   
DAY  DAYS   
MONTH  MONTHS   
YEAR  YEARS   
MINUTE_SECOND  "MINUTES:SECONDS"   
HOUR_MINUTE  "HOURS:MINUTES"   
DAY_HOUR  "DAYS HOURS"   
YEAR_MONTH  "YEARS-MONTHS"   
HOUR_SECOND  "HOURS:MINUTES:SECONDS"   
DAY_MINUTE  "DAYS HOURS:MINUTES"   
DAY_SECOND  "DAYS HOURS:MINUTES:SECONDS"   
在 expr 的格式中,MySQL 允許任何字符作為定界符。表中所顯示的是建議的定界字符。如果 date 參數是一個 DATE 值,并且計算的間隔僅僅有 YEAR、MONTH 和 DAY 部分(沒有時間部分),那么返回值也是一個 DATE 值。否則返回值是一個 DATETIME 值:  
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

如果你指定了一個太短的間隔值(沒有包括 type 關鍵詞所期望的所有間隔部分),MySQL 假設你遺漏了間隔值的最左邊部分。例如,如果指定一個 type 為 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 

注意,上面的例子中,單詞 INTERVAL 和關鍵詞 type 是不區分字母大小寫的。  

EXTRACT(type FROM date)  
EXTRACT() 函數使用與 DATE_ADD() 或 DATE_SUB() 一致的間隔類型,但是它用于指定從日期中提取的部分,而不是進行日期算術運算。  
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); 
       -> 1999 
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 
       -> 199907 
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 
       -> 20102 

TO_DAYS(date)  
給出一個日期 date,返回一個天數(從 0 年開始的天數):  
mysql> SELECT TO_DAYS(950501); 
        -> 728779 
mysql> SELECT TO_DAYS('1997-10-07'); 
        -> 729669 

TO_DAYS() 無意于使用先于格里高里歷法(即現行的陽歷)(1582)出現的值,因為它不考慮當歷法改變時所遺失的天數。  

FROM_DAYS(N)  
給出一個天數 N,返回一個 DATE 值:  
mysql> SELECT FROM_DAYS(729669); 
        -> '1997-10-07' 

FROM_DAYS() 無意于使用先于格里高里歷法(1582)出現的值,因為它不考慮當歷法改變時所遺失的天數。  

DATE_FORMAT(date,format)  
依照 format 字符串格式化 date 值。下面的修飾符可被用于 format 字符串中: 修飾符  含義   
%M  月的名字 (January..December)   
%W  星期的名字 (Sunday..Saturday)   
%D  有英文后綴的某月的第幾天 (0th, 1st, 2nd, 3rd, etc.)   
%Y  年份,數字的,4 位   
%y  年份,數字的,2 位   
%X  周值的年份,星期日是一個星期的第一天,數字的,4 位,與 '%V' 一同使用   
%x  周值的年份,星期一是一個星期的第一天,數字的,4 位,與 '%v' 一同使用   
%a  縮寫的星期名 (Sun..Sat)   
%d  月份中的天數,數字的 (00..31)   
%e  月份中的天數,數字的 (0..31)   
%m  月,數字的 (00..12)   
%c  月,數字的 (0..12)   
%b  縮寫的月份名 (Jan..Dec)   
%j  一年中的天數 (001..366)   
%H  小時 (00..23)   
%k  小時 (0..23)   
%h  小時 (01..12)   
%I  小時 (01..12)   
%l  小時 (1..12)   
%i  分鐘,數字的 (00..59)   
%r  時間,12 小時 (hh:mm:ss [AP]M)   
%T  時間,24 小時 (hh:mm:ss)   
%S  秒 (00..59)   
%s  秒 (00..59)   
%p  AM 或 PM   
%w  一周中的天數 (0=Sunday..6=Saturday)   
%U  星期 (00..53),星期日是一個星期的第一天   
%u  星期 (00..53),星期一是一個星期的第一天   
%V  星期 (01..53),星期日是一個星期的第一天。與 '%X' 一起使用   
%v  星期 (01..53),星期一是一個星期的第一天。與 '%x' 一起使用   
%%  一個字母 “%”   
所有其它的字符不經過解釋,直接復制到結果中:  
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' 

在 MySQL 3.23 中,在格式修飾符前需要字符 `%'。在更早的 MySQL 版本中,`%' 是可選的。 月份與天修飾符的范圍從零開始的原因是,在 MySQL 3.23 中,它允許存儲不完善的日期值(例如 '2004-00-00')。  

TIME_FORMAT(time,format)  
它的使用方法與上面的 DATE_FORMAT() 函數相似,但是 format 字符串只包含處理小時、分和秒的那些格式修飾符。使用其它的修飾符會產生一個 NULL 值或 0。  

CURDATE()  
CURRENT_DATE  
以 'YYYY-MM-DD' 或 YYYYMMDD 格式返回當前的日期值,返回的格式取決于該函數是用于字符串還是數字語境中:  
mysql> SELECT CURDATE(); 
        -> '1997-12-15' 
mysql> SELECT CURDATE() + 0; 
        -> 19971215 

CURTIME()  
CURRENT_TIME  
以 'HH:MM:SS' 或 HHMMSS 格式返回當前的時間值,返回的格式取決于該函數是用于字符串還是數字語境中:  
mysql> SELECT CURTIME(); 
        -> '23:50:26' 
mysql> SELECT CURTIME() + 0; 
        -> 235026 

NOW()  
SYSDATE()  
CURRENT_TIMESTAMP  
以 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS 格式返回當前的日期時間值,返回的格式取決于該函數是用于字符串還是數字語境中:  
mysql> SELECT NOW(); 
        -> '1997-12-15 23:50:26' 
mysql> SELECT NOW() + 0; 
        -> 19971215235026 

注意,函數 NOW() 在每個查詢中只計算一次,也就是在查詢開始執行時。這就是說,如果在一個單獨的查詢中多次引用了 NOW(),它只會給出值都是一個相同的時間。  

UNIX_TIMESTAMP()  
UNIX_TIMESTAMP(date)  
如果調用時沒有參數,以無符號的整數形式返回一個 Unix 時間戳(從 '1970-01-01 00:00:00' GMT 開始的秒數)。如果以一個參數 date 調用 UNIX_TIMESTAMP(),它將返回該參數值從 '1970-01-01 00:00:00' GMT 開始經過的秒數值。date 可以是一個 DATE 字符串,一個 DATETIME 字符串,一個 TIMESTAMP,或者以一個 YYMMDD 或 YYYYMMDD 顯示的本地時間:  
mysql> SELECT UNIX_TIMESTAMP(); 
        -> 882226357 
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); 
        -> 875996580 

當 UNIX_TIMESTAMP 被用于一個 TIMESTAMP 列時,函數直接返回一個內部的時間戳值,而不進行一個隱含地 “string-to-unix-timestamp” 轉換。如果你傳遞一個超出范圍的日期參數給 UNIX_TIMESTAMP() ,它將返回 0,但是請注意,MySQL 對其僅僅進行基本的檢驗(年范圍 1970-2037,月份 01-12,日期 01-31)。 如果你希望減去 UNIX_TIMESTAMP() 列,你應該需要將結果強制轉換為一有符號整數。查看章節 6.3.5 Cast 函數。  

FROM_UNIXTIME(unix_timestamp [,format])  
以 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS 格式返回一個 unix_timestamp 參數值,返回值的形式取決于該函數使用于字符串還是數字語境。 如果 format 給出,返回值依 format 字符串被格式。format 可以包含與 DATE_FORMAT() 函數同樣的修飾符。  
mysql> SELECT FROM_UNIXTIME(875996580); 
        -> '1997-10-04 22:23:00' 
mysql> SELECT FROM_UNIXTIME(875996580) + 0; 
        -> 19971004222300 
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), 
                            '%Y %D %M %h:%i:%s %x'); 
        -> '1997 23rd December 03:43:30 1997' 

SEC_TO_TIME(seconds)  
以 'HH:MM:SS' 或 HHMMSS 格式返回參數 seconds 被轉換到時分秒后的值,返回值的形式取決于該函數使用于字符串還是數字語境:  
mysql> SELECT SEC_TO_TIME(2378); 
        -> '00:39:38' 
mysql> SELECT SEC_TO_TIME(2378) + 0; 
        -> 3938 

TIME_TO_SEC(time)  
將參數 time 轉換為秒數后返回:  
mysql> SELECT TIME_TO_SEC('22:23:00'); 
        -> 80580 
mysql> SELECT TIME_TO_SEC('00:39:38'); 
        -> 2378

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 毛片网页 | 久久国产精品久久久久久 | 女人性做爰免费网站 | 亚洲精品日韩综合观看成人91 | 新久久久久久 | 亚洲综合一区二区 | 一级黄网站 | 全部免费毛片在线播放 | 伊人网在线视频观看 | 一道本一区二区三区 | 精品黄色一级片 | 成人av片在线观看 | 成人综合站 | 999久久久国产999久久久 | 91视视频在线观看入口直接观看 | 久久久免费电影 | 波多野结衣先锋影音 | 久久综合九色综合网站 | 在线久草| 久久永久视频 | 538在线精品 | 欧洲一区二区三区 | 国产精品一区二区在线观看 | 午夜一级片 | 久久久一区二区 | 超碰97免费在线 | 国外精品久久久蜜桃免费全文阅读 | 成人h动漫精品一区二区器材 | av网站在线免费观看 | 黄a在线观看 | 亚洲字幕成人中文在线观看 | 婷婷色综合 | 在线观看免费黄色小视频 | 日韩一区二区三区在线视频 | 自拍偷拍中文字幕 | 欧美视频区 | 人人操天天射 | 欧美日韩中文在线观看 | 精品九| 91在线免费看 | 国产精品极品美女在线观看免费 |