| 單位(unit) | 表達(dá)式(expr) |
|---|---|
| DAY | DAYS |
| DAY_HOUR | ‘DAYS HOURS' |
| DAY_MICROSECOND | ‘DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
| DAY_MINUTE | ‘DAYS HOURS:MINUTES' |
| DAY_SECOND | ‘DAYS HOURS:MINUTES:SECONDS' |
| HOUR | HOURS |
| HOUR_MICROSECOND | ‘HOURS:MINUTES:SECONDS.MICROSECONDS' |
| HOUR_MINUTE | ‘HOURS:MINUTES' |
| HOUR_SECOND | ‘HOURS:MINUTES:SECONDS' |
| MICROSECOND | MICROSECONDS |
| MINUTE | MINUTES |
| MINUTE_MICROSECOND | ‘MINUTES:SECONDS.MICROSECONDS' |
| MINUTE_SECOND | ‘MINUTES:SECONDS' |
| MONTH | MONTHS |
| QUARTER | QUARTERS |
| SECOND | SECONDS |
| SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS' |
| WEEK | WEEKS |
| YEAR | YEARS |
| YEAR_MONTH | ‘YEARS-MONTHS' |
我們來看個(gè)實(shí)例,下面的sql語句在2020-01-01日期上增加1天返回結(jié)果為,2020-01-02:
mysql> SELECT '2020-01-01' + INTERVAL 1 DAY; +-------------------------------+ | '2020-01-01' + INTERVAL 1 DAY | +-------------------------------+ | 2020-01-02 | +-------------------------------+ 1 row in set (0.01 sec)
如果我們在涉及DATE或DATETIME值的表達(dá)式中使用了間隔值,并且間隔值位于表達(dá)式的右側(cè),則可以使用expr的負(fù)值,如以下示例所示:
mysql> SELECT '2020-01-01' + INTERVAL -1 DAY; +--------------------------------+ | '2020-01-01' + INTERVAL -1 DAY | +--------------------------------+ | 2019-12-31 | +--------------------------------+ 1 row in set
我們再來看如何使用DATE_ADD和DATE_SUB從日期值添加/減去1個(gè)月:
mysql> SELECT DATE_ADD('2020-01-01', INTERVAL 1 MONTH) 1_MONTH_LATER,
DATE_SUB('2020-01-01',INTERVAL 1 MONTH) 1_MONTH_BEFORE;
+---------------+----------------+
| 1_MONTH_LATER | 1_MONTH_BEFORE |
+---------------+----------------+
| 2020-02-01 | 2019-12-01 |
+---------------+----------------+
1 row in set
完事再來看一個(gè)sql使用TIMESTAMPADD(unit,interval,expression)函數(shù)向時(shí)間戳值添加30分鐘:
mysql> SELECT TIMESTAMPADD(MINUTE,30,'2020-01-01') 30_MINUTES_LATER; +---------------------+ | 30_MINUTES_LATER | +---------------------+ | 2020-01-01 00:30:00 | +---------------------+ 1 row in set
說這么多,大家可能還有點(diǎn)懵,不怕,來看具體的操作,我們創(chuàng)建一個(gè)名為memberships的新表,用于演示:
CREATE TABLE memberships ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(355) NOT NULL, plan VARCHAR(255) NOT NULL, expired_date DATE NOT NULL );
在上面的memberships表中,expired_date列存儲每個(gè)會員的會員資格到期日,完事我們插入一部分?jǐn)?shù)據(jù)到memberships表中:
INSERT INTO memberships(email, plan, expired_date)
VALUES('john.doe@yiibai.com','Gold','2018-07-13'),
('jane.minsu@yiibai.com','Platinum','2018-07-10'),
('david.corp@yiibai.com','Silver','2018-07-15'),
('julia.william@yiibai.com','Gold','2018-07-20'),
('peter.drucker@yiibai.com','Silver','2018-07-08');
現(xiàn)在我們來假設(shè)今天是2018-07-06,然后我們來使用sql語句查詢在未來7天內(nèi)會員資格將要過期的會員:
SELECT email, plan, expired_date, DATEDIFF(expired_date, '2018-07-06') remaining_days FROM memberships WHERE '2018-07-06' BETWEEN DATE_SUB(expired_date, INTERVAL 7 DAY) AND expired_date;
執(zhí)行上面查詢語句后,得到以下結(jié)果:
+--------------------------+----------+--------------+----------------+ | email | plan | expired_date | remaining_days | +--------------------------+----------+--------------+----------------+ | john.doe@yiibai.com | Gold | 2018-07-13 | 7 | | jane.minsu@yiibai.com | Platinum | 2018-07-10 | 4 | | peter.drucker@yiibai.com | Silver | 2018-07-08 | 2 | +--------------------------+----------+--------------+----------------+ 3 rows in set
在上面的sql中,DATE_SUB函數(shù)將間隔值(INTERVAL 7 DAY)指定的過期日期減去7天,也就是說,本來某條數(shù)據(jù)的日期是13號,減去七天,那就是6號了。大概就是這個(gè)意思了,相信大家都有一定的理解了。
那咱們今天就到這里了。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。
標(biāo)簽:陽江 來賓 鞍山 煙臺 果洛 河北 赤峰 黃石
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析》,本文關(guān)鍵詞 mysql,日期,和,時(shí),間的,間隔,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。