MariaDB NOW() 函数的基础用法与实例

MariaDB NOW() 函数用来获取当前的日期和时间。

发布于

MariaDB NOW() 函数用来获取当前的日期和时间。这个函数在需要记录数据变更或者事件发生的具体时间时非常有用,常见于日志记录和时间戳功能。

语法

MariaDB NOW() 函数的语法如下:

NOW()

该函数没有参数,并且返回当前的日期和时间,格式为 ‘YYYY-MM-DD HH:MM:SS’。

实例

获取当前日期和时间

以下示例展示了如何使用 NOW() 函数来获取当前的日期和时间。

SELECT NOW();

以下是该语句的输出:

+---------------------+
| NOW()               |
+---------------------+
| 2024-03-09 17:05:43 |
+---------------------+

这个输出显示了查询时的确切日期和时间。

在表中使用 NOW() 记录时间戳

首先,我们创建一个表来存储用户的登录信息,包括登录时间。

DROP TABLE IF EXISTS user_logins;
CREATE TABLE user_logins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    login_time TIMESTAMP DEFAULT NOW()
);

然后,我们插入一条用户登录记录。

INSERT INTO user_logins (username) VALUES ('user123');

查询这个表,可以看到登录时间被自动记录。

SELECT * FROM user_logins;

以下是该语句的输出:

+----+----------+---------------------+
| id | username | login_time          |
+----+----------+---------------------+
|  1 | user123  | 2024-03-09 17:05:59 |
+----+----------+---------------------+

这个输出显示了用户登录时自动插入的时间戳。

与其他日期时间函数结合使用

我们可以结合 NOW() 和其他日期时间函数来获取更具体的时间信息。例如,获取当前小时数。

SELECT EXTRACT(HOUR FROM NOW());

以下是该语句的输出:

+--------------------------+
| EXTRACT(HOUR FROM NOW()) |
+--------------------------+
|                       17 |
+--------------------------+

这个输出显示了当前的小时数。

在 WHERE 子句中使用 NOW()

NOW() 函数也可以在 WHERE 子句中使用,以过滤特定时间之后的数据。假设我们有一个订单表,我们想找出今天之后创建的订单。

DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(255) NOT NULL,
    order_date TIMESTAMP DEFAULT NOW()
);
INSERT INTO orders (product_name) VALUES ('Product 1'), ('Product 2'), ('Product 3');
SELECT * FROM orders WHERE order_date > NOW() - INTERVAL 1 DAY;

以下是该语句的输出:

+----------+--------------+---------------------+
| order_id | product_name | order_date          |
+----------+--------------+---------------------+
|        1 | Product 1    | 2024-03-09 17:06:27 |
|        2 | Product 2    | 2024-03-09 17:06:27 |
|        3 | Product 3    | 2024-03-09 17:06:27 |
+----------+--------------+---------------------+

这个输出显示了在过去一天内创建的所有订单。

在更新语句中使用 NOW()

我们可以在更新语句中使用 NOW() 来记录数据变更的时间。例如,更新用户的最后登录时间。

UPDATE user_logins SET login_time = NOW() WHERE username = 'user123';
SELECT * FROM user_logins WHERE username = 'user123';

以下是该语句的输出:

+----+----------+---------------------+
| id | username | login_time          |
+----+----------+---------------------+
|  1 | user123  | 2024-03-09 17:06:38 |
+----+----------+---------------------+

这个输出显示了用户最后登录时间的更新。

相关函数

以下是几个与 MariaDB NOW() 相关的几个函数:

  • MariaDB CURDATE() 函数用来获取当前的日期。
  • MariaDB CURTIME() 函数用来获取当前的时间。
  • MariaDB UNIX_TIMESTAMP() 函数用来获取当前的 Unix 时间戳。
  • MariaDB SYSDATE() 函数用来获取函数执行时的日期和时间,与 NOW() 的区别在于 SYSDATE() 不受事务的影响。

结论

MariaDB 的 NOW() 函数是一个非常实用的工具,可以帮助我们在数据库中记录和查询当前的日期和时间。通过本文的介绍和实例,您应该能够掌握如何在不同场景下使用这个函数。无论是在数据插入时自动记录时间戳,还是在查询和更新数据时作为时间条件,NOW() 函数都能提供强大的支持。