MySQL TIMESTAMP 数据类型介绍

MySQL 中的 TIMESTAMP 数据类型用于存储日期和时间。它类似于 DATETIME 数据类型,但它在存储和检索时间戳值时更加方便。

语法

TIMESTAMP 数据类型的语法如下:

TIMESTAMP[(fractional_seconds)];

其中,fractional_seconds 是可选的,表示小数秒的位数。如果未指定 fractional_seconds,则默认为 0。

使用场景

TIMESTAMP 数据类型通常用于需要存储和检索日期和时间信息的应用程序中。它适用于以下情况:

  • 存储记录的创建或修改时间戳;
  • 跟踪事件的发生时间;
  • 存储预定时间。

示例

下面是两个示例,演示如何使用 TIMESTAMP 数据类型。

首先,我们创建一个名为 orders 的表,其中包含订单的信息,包括订单号、客户名称、订单日期和订单状态:

CREATE TABLE orders (
  order_id INT AUTO_INCREMENT PRIMARY KEY,
  customer_name VARCHAR(50) NOT NULL,
  order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  order_status VARCHAR(20) NOT NULL
);

在这个示例中,order_date 列使用 TIMESTAMP 数据类型,并设置默认值为当前时间戳。

接下来,我们向 orders 表中插入一些示例数据:

INSERT INTO orders (customer_name, order_status)
VALUES ('John Smith', 'Pending'),
       ('Jane Doe', 'Complete'),
       ('Bob Johnson', 'Pending');

现在,我们可以检索 orders 表中的数据,并查看 order_date 列的值:

SELECT * FROM orders;

结果类似于以下内容:

+----------+---------------+---------------------+--------------+
| order_id | customer_name | order_date          | order_status |
+----------+---------------+---------------------+--------------+
|        1 | John Smith    | 2023-03-12 12:34:56 | Pending      |
|        2 | Jane Doe      | 2023-03-12 12:35:01 | Complete     |
|        3 | Bob Johnson   | 2023-03-12 12:35:05 | Pending      |
+----------+---------------+---------------------+--------------+

在这个结果中,order_date 列显示了每个订单的时间戳值。

接下来,我们将使用 TIMESTAMP 数据类型来存储事件的发生时间。我们创建一个名为 events 的表,其中包含事件的名称和发生时间:

CREATE TABLE events (
  event_id INT AUTO_INCREMENT PRIMARY KEY,
  event_name VARCHAR(50) NOT NULL,
  event_time TIMESTAMP
);

在这个示例中,event_time 列使用 TIMESTAMP 数据类型来存储事件的发生时间。

然后,我们向 events 表中插入一些示例数据:

INSERT INTO events (event_name, event_time)
VALUES ('Event 1', '2023-03-12 12:40:00'),
       ('Event 2', '2023-03-12 12:45:00'),
       ('Event 3', '2023-03-12 12:50:00');

现在,我们可以检索 events 表中所有的数据:

SELECT * FROM events;

这将返回 events 表中的所有数据,包括 idtitledescriptionstart_timeend_time 列的值。

如果我们只想检索某些列,可以使用以下语句:

SELECT id, title, start_time FROM events;

这将只返回 idtitlestart_time 列的值。

我们还可以使用 WHERE 子句来筛选特定的数据。例如,以下语句将返回所有在 2023 年 3 月 15 日之前开始的事件:

SELECT * FROM events WHERE start_time < '2023-03-15';

这将只返回满足条件的事件,其他事件将被排除。

除此之外,我们还可以使用 ORDER BY 子句来对检索结果进行排序,例如:

SELECT * FROM events ORDER BY start_time DESC;

这将按照 start_time 列进行降序排序,也就是最晚开始的事件排在最前面。

结论

MySQL 中的 TIMESTAMP 数据类型用于存储日期和时间。它类似于 DATETIME 数据类型,但它在存储和检索时间戳值时更加方便。