濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析

mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析

熱門標(biāo)簽:在哪里申請(qǐng)400電話 銷售語(yǔ)音電話機(jī)器人 常州網(wǎng)絡(luò)外呼系統(tǒng)開(kāi)發(fā) 外呼系統(tǒng)電銷受騙 400電話申請(qǐng)信用卡 萊西市地圖標(biāo)注 巫師三血與酒地圖標(biāo)注 安徽ai電話電銷機(jī)器人有效果嗎 走過(guò)哪個(gè)省地圖標(biāo)注

本文實(shí)例講述了mysql日期和時(shí)間的間隔計(jì)算。分享給大家供大家參考,具體如下:

我們首先得明確一點(diǎn),mysql間隔值主要用于日期和時(shí)間計(jì)算,如果我們要要?jiǎng)?chuàng)建間隔值,可以使用以下表達(dá)式:

INTERVAL expr unit

然后嘞,我們得了解,INTERVAL關(guān)鍵字是確定間隔值的expr,以及指定間隔單位的單位。 例如,要?jiǎng)?chuàng)建1天間隔,我們就要使用以下表達(dá)式:

INTERVAL 1 DAY

不過(guò)我們要注意,INTERVAL和UNIT不區(qū)分大小寫(xiě),因此以下表達(dá)式與上述表達(dá)式相當(dāng):

interval 1 day

日期和時(shí)間算術(shù)的間隔值的實(shí)際用法和語(yǔ)法,我們可以看下面的代碼:

date + INTERVAL expr unit
date - INTERVAL expr unit

間隔值同樣也用于各種時(shí)間函數(shù),如DATE_ADD,DATE_SUB,TIMESTAMPADD和TIMESTAMPDIFF。mysql定義了expr和unit的標(biāo)準(zhǔn)格式,如下表所示:

單位(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'

我們來(lái)看個(gè)實(shí)例,下面的sql語(yǔ)句在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)

如果我們?cè)谏婕癉ATE或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

我們?cè)賮?lái)看如何使用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

完事再來(lái)看一個(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

說(shuō)這么多,大家可能還有點(diǎn)懵,不怕,來(lái)看具體的操作,我們創(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列存儲(chǔ)每個(gè)會(huì)員的會(huì)員資格到期日,完事我們插入一部分?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)在我們來(lái)假設(shè)今天是2018-07-06,然后我們來(lái)使用sql語(yǔ)句查詢?cè)谖磥?lái)7天內(nèi)會(huì)員資格將要過(guò)期的會(huì)員:

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í)行上面查詢語(yǔ)句后,得到以下結(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)指定的過(guò)期日期減去7天,也就是說(shuō),本來(lái)某條數(shù)據(jù)的日期是13號(hào),減去七天,那就是6號(hào)了。大概就是這個(gè)意思了,相信大家都有一定的理解了。

那咱們今天就到這里了。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

您可能感興趣的文章:
  • MySQL DATEDIFF函數(shù)獲取兩個(gè)日期的時(shí)間間隔的方法
  • MySQL實(shí)現(xiàn)當(dāng)前數(shù)據(jù)表的所有時(shí)間都增加或減少指定的時(shí)間間隔(推薦)
  • MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔

標(biāo)簽:陽(yáng)江 來(lái)賓 鞍山 煙臺(tái) 果洛 河北 赤峰 黃石

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析》,本文關(guān)鍵詞  mysql,日期,和,時(shí),間的,間隔,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    白玉县| 加查县| 巴东县| 民勤县| 三门县| 山西省| 类乌齐县| 北海市| 平陆县| 仲巴县| 婺源县| 德钦县| 南和县| 广德县| 苍梧县| 天峨县| 延庆县| 濮阳县| 濮阳市| 荥经县| 刚察县| 五寨县| 海城市| 鞍山市| 河曲县| 屏东县| 乃东县| 丁青县| 招远市| 富源县| 太仓市| 望谟县| 霍邱县| 二连浩特市| 西和县| 嵊州市| 怀柔区| 德化县| 新邵县| 洪雅县| 慈利县|