MySQL now() (仅日期,不时间)与日期时间字段进行比较

作者:编程家 分类: mysql 时间:2025-08-02

MySQL now() 函数可以获取当前日期和时间。如果我们只想获取当前日期而不需要时间,可以使用 now() 函数结合日期时间字段进行比较。在本文中,我们将探讨如何使用 MySQL 的 now() 函数来比较日期和日期时间字段,并通过案例代码进行演示。

比较日期字段

首先,让我们看一下如何使用 now() 函数与日期字段进行比较。假设我们有一个名为 customers 的表,其中有一个名为 birthdate 的日期字段,我们想找出今天生日的客户。我们可以使用以下查询语句来实现:

SELECT * FROM customers WHERE DATE(birthdate) = CURDATE();

在这个查询中,我们使用了 DATE() 函数来提取 birthdate 字段的日期部分,并使用 CURDATE() 函数获取当前日期。通过将这两个值进行比较,我们可以找到与今天日期相同的记录,即今天生日的客户。

比较日期时间字段

接下来,我们将讨论如何使用 now() 函数与日期时间字段进行比较。假设我们有一个名为 orders 的表,其中有一个名为 order_date 的日期时间字段,我们想找出今天之后下的订单。我们可以使用以下查询语句来实现:

SELECT * FROM orders WHERE order_date >= CURDATE();

在这个查询中,我们将 order_date 字段与 CURDATE() 函数的返回值进行比较。由于 CURDATE() 函数只返回日期而不包含时间信息,所以我们可以找到今天及之后的订单。

案例代码

下面是一个完整的案例代码,演示了如何使用 now() 函数与日期和日期时间字段进行比较:

sql

-- 创建 customers 表

CREATE TABLE customers (

id INT PRIMARY KEY,

name VARCHAR(50),

birthdate DATE

);

-- 插入测试数据

INSERT INTO customers (id, name, birthdate)

VALUES (1, 'John Doe', '1990-01-01'),

(2, 'Jane Smith', '1995-02-15'),

(3, 'Mike Johnson', '1985-05-10');

-- 查询今天生日的客户

SELECT * FROM customers WHERE DATE(birthdate) = CURDATE();

-- 创建 orders 表

CREATE TABLE orders (

id INT PRIMARY KEY,

product VARCHAR(50),

order_date DATETIME

);

-- 插入测试数据

INSERT INTO orders (id, product, order_date)

VALUES (1, 'Product A', '2022-01-01 10:00:00'),

(2, 'Product B', '2022-02-15 15:30:00'),

(3, 'Product C', '2022-05-10 09:45:00');

-- 查询今天及之后的订单

SELECT * FROM orders WHERE order_date >= CURDATE();

以上代码创建了一个名为 customers 的表和一个名为 orders 的表,并插入了一些测试数据。然后,使用 now() 函数与日期和日期时间字段进行比较,查找出符合条件的记录。

通过使用 MySQL 的 now() 函数,我们可以轻松地与日期和日期时间字段进行比较。通过提取日期部分或将日期时间字段与当前日期进行比较,我们可以找到符合特定条件的记录。希望本文对你理解如何使用 now() 函数进行日期比较有所帮助。

以上就是关于使用 MySQL now() 函数与日期时间字段进行比较的文章内容及案例代码。