中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中如何計算日期和時間的間隔

發布時間:2021-07-15 15:19:08 來源:億速云 閱讀:187 作者:小新 欄目:MySQL數據庫

這篇文章主要介紹mysql中如何計算日期和時間的間隔,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

我們首先得明確一點,mysql間隔值主要用于日期和時間計算,如果我們要要創建間隔值,可以使用以下表達式:

INTERVAL expr unit

然后嘞,我們得了解,INTERVAL關鍵字是確定間隔值的expr,以及指定間隔單位的單位。 例如,要創建1天間隔,我們就要使用以下表達式:

INTERVAL 1 DAY

不過我們要注意,INTERVAL和UNIT不區分大小寫,因此以下表達式與上述表達式相當:

interval 1 day

日期和時間算術的間隔值的實際用法和語法,我們可以看下面的代碼:

date + INTERVAL expr unit
date - INTERVAL expr unit

間隔值同樣也用于各種時間函數,如DATE_ADD,DATE_SUB,TIMESTAMPADD和TIMESTAMPDIFF。mysql定義了expr和unit的標準格式,如下表所示:

單位(unit)表達式(expr)
DAYDAYS
DAY_HOUR‘DAYS HOURS'
DAY_MICROSECOND‘DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_MINUTE‘DAYS HOURS:MINUTES'
DAY_SECOND‘DAYS HOURS:MINUTES:SECONDS'
HOURHOURS
HOUR_MICROSECOND‘HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_MINUTE‘HOURS:MINUTES'
HOUR_SECOND‘HOURS:MINUTES:SECONDS'
MICROSECONDMICROSECONDS
MINUTEMINUTES
MINUTE_MICROSECOND‘MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND‘MINUTES:SECONDS'
MONTHMONTHS
QUARTERQUARTERS
SECONDSECONDS
SECOND_MICROSECOND‘SECONDS.MICROSECONDS'
WEEKWEEKS
YEARYEARS
YEAR_MONTH‘YEARS-MONTHS'

我們來看個實例,下面的sql語句在2020-01-01日期上增加1天返回結果為,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值的表達式中使用了間隔值,并且間隔值位于表達式的右側,則可以使用expr的負值,如以下示例所示:

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個月:

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

完事再來看一個sql使用TIMESTAMPADD(unit,interval,expression)函數向時間戳值添加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

說這么多,大家可能還有點懵,不怕,來看具體的操作,我們創建一個名為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列存儲每個會員的會員資格到期日,完事我們插入一部分數據到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');

現在我們來假設今天是2018-07-06,然后我們來使用sql語句查詢在未來7天內會員資格將要過期的會員:

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;

執行上面查詢語句后,得到以下結果:

+--------------------------+----------+--------------+----------------+
| 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函數將間隔值(INTERVAL 7 DAY)指定的過期日期減去7天,也就是說,本來某條數據的日期是13號,減去七天,那就是6號了。大概就是這個意思了,相信大家都有一定的理解了。

以上是“mysql中如何計算日期和時間的間隔”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卓资县| 栾川县| 新昌县| 洛阳市| 北海市| 北川| 丰原市| 奉节县| 昆山市| 称多县| 德州市| 榆中县| 乐山市| 高碑店市| 沂源县| 肇庆市| 广元市| 南川市| 石屏县| 萨嘎县| 云阳县| 灵宝市| 新蔡县| 兴化市| 锦州市| 永宁县| 贵阳市| 连江县| 安顺市| 邵武市| 白银市| 南川市| 赣榆县| 荥经县| 庄河市| 大竹县| 阳高县| 渝中区| 旌德县| 威远县| 迁西县|