MySQL DATETIME 获取小时

简介

在 MySQL 数据库中,DATETIME 是一种日期和时间的数据类型,它存储了年、月、日、小时、分钟和秒。如果我们想要从 DATETIME 中提取小时的值,MySQL 提供了一些内置函数来实现这个目的。本文将介绍如何使用这些函数来获取 DATETIME 中的小时。

使用 HOUR() 函数获取小时

HOUR() 函数是 MySQL 中用于获取日期或时间字段的小时值的函数。它接受一个 DATETIME 或 TIMESTAMP 类型的参数,并返回一个整数值,表示该时间的小时。

下面是一个示例,展示了如何使用 HOUR() 函数从 DATETIME 字段中获取小时的值:

SELECT HOUR('2022-01-01 09:30:45');

这个查询将返回 9,表示时间为 9 点。

使用 DATE_FORMAT() 函数获取小时

除了 HOUR() 函数,我们还可以使用 DATE_FORMAT() 函数来从 DATETIME 中获取小时的值。DATE_FORMAT() 函数可以根据指定的格式返回日期或时间字段的字符串表示。

下面是一个示例,展示了如何使用 DATE_FORMAT() 函数从 DATETIME 字段中获取小时的值:

SELECT DATE_FORMAT('2022-01-01 09:30:45', '%H');

这个查询也将返回 9,表示时间为 9 点。

示例

为了更好地理解如何使用这些函数,我们来看一个完整的示例。假设我们有一个名为 orders 的表,其中包含了订单的信息,包括下单时间。

CREATE TABLE orders (
  id INT AUTO_INCREMENT PRIMARY KEY,
  order_time DATETIME
);

INSERT INTO orders (order_time) VALUES ('2022-01-01 09:30:45');
INSERT INTO orders (order_time) VALUES ('2022-01-01 14:45:30');

现在我们想要查询每个订单的下单小时。我们可以使用 HOUR() 函数或 DATE_FORMAT() 函数来实现这个目的。

使用 HOUR() 函数的查询:

SELECT id, HOUR(order_time) AS order_hour FROM orders;

使用 DATE_FORMAT() 函数的查询:

SELECT id, DATE_FORMAT(order_time, '%H') AS order_hour FROM orders;

上述两个查询将返回以下结果:

id order_hour
1 9
2 14

这样我们就成功地从 DATETIME 字段中获取了小时的值。

序列图

下面是一个序列图,展示了从 DATETIME 中获取小时的过程:

sequenceDiagram
    participant Client
    participant MySQL

    Client->>MySQL: 发送查询请求
    MySQL->>Client: 返回查询结果

关系图

下面是一个关系图,展示了 orders 表的结构和字段之间的关系:

erDiagram
    CUSTOMER ||--o{ ORDERS : has
    ORDERS ||--o{ ORDER_ITEMS : has

总结

在 MySQL 中,我们可以使用 HOUR() 函数或 DATE_FORMAT() 函数来从 DATETIME 中获取小时的值。HOUR() 函数直接返回一个整数值,而 DATE_FORMAT() 函数可以返回一个字符串表示。通过使用这些函数,我们可以方便地从 DATETIME 字段中提取小时的信息,并在查询中使用。

希望本文对你理解如何在 MySQL 中获取 DATETIME 的小时有所帮助。如果你还有任何疑问,请随时留言。