mysql 日期和时间函数_介绍一下mysql的日期和时间函数
介紹一下mysql的日期和時(shí)間函數(shù)
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)
這些函數(shù)執(zhí)行日期的算術(shù)運(yùn)算。ADDDATE() 和 SUBDATE() 分別是 DATE_ADD() 和 DATE_SUB() 的同義詞。 在 MySQL 3.23 中,如果表達(dá)式的右邊是一個(gè)日期值或一個(gè)日期時(shí)間型字段,你可以使用 + 和 – 代替 DATE_ADD() 和 DATE_SUB()(示例如下)。 參數(shù) date 是一個(gè) DATETIME 或 DATE 值,指定一個(gè)日期的開(kāi)始。expr 是一個(gè)表達(dá)式,指定從開(kāi)始日期上增加還是減去間隔值。expr 是一個(gè)字符串;它可以以一個(gè) “-” 領(lǐng)頭表示一個(gè)負(fù)的間隔值。type 是一個(gè)關(guān)鍵詞,它標(biāo)志著表達(dá)式以何格式被解釋。 下表顯示 type 和 expr 參數(shù)是如何關(guān)聯(lián)的: 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 參數(shù)是一個(gè) DATE 值,并且計(jì)算的間隔僅僅有 YEAR、MONTH 和 DAY 部分(沒(méi)有時(shí)間部分),那么返回值也是一個(gè) DATE 值。否則返回值是一個(gè) 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
如果你指定了一個(gè)太短的間隔值(沒(méi)有包括 type 關(guān)鍵詞所期望的所有間隔部分),MySQL 假設(shè)你遺漏了間隔值的最左邊部分。例如,如果指定一個(gè) type 為 DAY_SECOND,那么 expr 值被期望包含天、小時(shí)、分鐘和秒部分。如果你象 “1:10″ 樣指定一個(gè)值,MySQL 假設(shè)天和小時(shí)部分被遺漏了,指定的值代表分鐘和秒。換句話說(shuō),”1:10″ DAY_SECOND 被解釋為等價(jià)于 “1:10″ MINUTE_SECOND。這類似于 MySQL 解釋 TIME 值為經(jīng)過(guò)的時(shí)間而不是一天的時(shí)刻。注意,如果依著包含一個(gè)時(shí)間部分的間隔增加或減少一個(gè)日期值,該日期值將被自動(dòng)地轉(zhuǎn)換到一個(gè)日期時(shí)間值:
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
如果你使用了確定不正確的日期,返回結(jié)果將是 NULL。如果你增加 MONTH、YEAR_MONTH 或 YEAR,并且結(jié)果日期的天比新月份的最大天數(shù)還大,那么它將被調(diào)整到新月份的最大天數(shù):
mysql> SELECT DATE_ADD(’1998-01-30′, INTERVAL 1 MONTH);
-> 1998-02-28
注意,上面的例子中,單詞 INTERVAL 和關(guān)鍵詞 type 是不區(qū)分字母大小寫的。
EXTRACT(type FROM date)
EXTRACT() 函數(shù)使用與 DATE_ADD() 或 DATE_SUB() 一致的間隔類型,但是它用于指定從日期中提取的部分,而不是進(jìn)行日期算術(shù)運(yùn)算。
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)
給出一個(gè)日期 date,返回一個(gè)天數(shù)(從 0 年開(kāi)始的天數(shù)):
mysql> SELECT TO_DAYS(950501);
-> 728779
mysql> SELECT TO_DAYS(’1997-10-07′);
-> 729669
TO_DAYS() 無(wú)意于使用先于格里高里歷法(即現(xiàn)行的陽(yáng)歷)(1582)出現(xiàn)的值,因?yàn)樗豢紤]當(dāng)歷法改變時(shí)所遺失的天數(shù)。
FROM_DAYS(N)
給出一個(gè)天數(shù) N,返回一個(gè) DATE 值:
總結(jié)
以上是生活随笔為你收集整理的mysql 日期和时间函数_介绍一下mysql的日期和时间函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python treeview文本自动换
- 下一篇: 牛客网SQL篇刷题篇(24-31)