比較 MySQL 中的兩個日期

Sweety Rupani 2023年1月30日 2022年5月14日
  1. 建立表並插入值
  2. 使用 WHERE 子句比較兩個日期
  3. 使用 BETWEEN 運算子比較兩個日期
  4. 使用 DATE_ADD 函式比較兩個日期
比較 MySQL 中的兩個日期

這篇文章解釋了在 MySQL 中比較兩個日期。有三種不同的方法來完成這項任務。

  1. 使用 WHERE 子句
  2. 使用 BETWEEN 運算子
  3. 使用 DATE_ADD 函式

建立表並插入值

首先,我將為員工建立一個表

Create table employee (empid int primary key, fname varchar(10), lname varchar(20), logindate timestamp not null default CURRENT_TIMESTAMP); 

現在,我將在表中插入一些值進行演示。

INSERT INTO employee('empid', 'fname', 'lname')VALUES (1,'aaa','bbb'); 

INSERT INTO employee VALUES 
(201,'Peter','Parker','2001-01-01 16:15:00'), 
(202,'Thor','Odinson','2021-08-02 12:15:00'), 
(204,'Loki','Laufeyson','2009-08-03 10:43:24'); 

使用 WHERE 子句比較兩個日期

下面的查詢是一種非常簡單的方法,使用 SELECT 查詢提取給定日期範圍之間的所有記錄。

SELECT * FROM employee WHERE logindate >= '2000-07-05' AND logindate < '2011-11-10'; 

比較 mysql 中的兩個日期-使用 where 子句

使用 BETWEEN 運算子比較兩個日期

首先,我們必須在 MySQL 中將日期轉換為字串。為了完成此任務,我們將使用 DATE 函式從 Datetime 中提取日期。

DATE 函式的語法如下。

DATE(column name)

如果你希望利用 logindate 列上的索引,你可以試試這個。之間運算子還可用於選擇在兩個指定日期表示式之間具有日期列的所有記錄。

SELECT * FROM employee WHERE DATE(logindate) BETWEEN '2000-07-05' AND '2011-11-10'; 

比較 mysql 中的兩個日期 - 使用之間

MySQL 只允許一種 yyyy-mm-dd 日期格式,因此每當你需要格式化任何字串日期表示式時,你都必須使用這種格式。

現在,你可能有疑問,相比之下,DATE() 函式的需求是什麼?

因此,MySQL DATE() 函式從你的 DATETIME 或 TIMESTAMP 列中提取日期部分到一個字串中,如下所示:

mysql> SELECT DATE('2005-08-28 01:02:03'); -> '2005-08-28' 

使用 DATE() 函式,MySQL 將只考慮列值的日期部分進行比較。當你不使用 DATE() 函式時,MySQL 會將你的列的時間部分與你的字串表示式進行比較。使用此選項,任何比較都將包含指定的字串表示式作為結果集的一部分

當將 DATETIME 或 TIME-STAMP 列與代表日期的字串進行比較時,如上面的查詢,MySQL 會將列值和表示式值都轉換為長整數型別進行比較。

這就是即使你將日期列與字串進行比較,也不需要手動將日期列值轉換為字串的原因。

使用 DATE_ADD 函式比較兩個日期

另一種方法是使用 DATE_ADD() 函式。雖然,這種方法不一定需要 DATE_ADD() 函式。但是,如果你想考慮在所需日期之後的幾分鐘作為解決方案的一部分,你可以使用它。例如,如果我想要給定日期範圍之間的所有記錄,但可以考慮在指定限制後 15 分鐘插入的記錄。這個功能非常有用。

DATE_ADD() 函式用於將指定的時間或日期間隔新增到給定日期,然後返回日期。DATE_ADD 函式有兩個引數,第一個引數是日期,第二個是要新增的間隔

select * from employee 
where logindate between '2000-07-05' and DATE_ADD('2011-07-10',INTERVAL 15 MINUTE); 

比較 mysql 中的兩個日期 - 使用日期新增