SQL TIME 数据类型17 Mar 2025 | 6 分钟阅读 - 在 SQL 中,很多情况下你需要将时间存储在数据库的 SQL 表中。
- 要在 SQL 表中存储时间,你的第一步应该是创建一个能够存储时间的列。
- 如果你想在表的一列中存储时间,你需要创建一个 TIME 数据类型的列。
- TIME 数据类型默认以“HH:MM:SS”格式存储时间。
- 使用 SQL 的 SELECT 语句,你可以从 SQL 表的列中检索时间。
- 除了以存储的默认格式检索时间外,SQL 中还有一个 TIME_FORMAT() 函数,可以使用它以更易读的格式检索时间。
- 你可以检索以表中存储的默认格式“HH:MM:SS”检索时间,或者根据我们的需求选择一个合适的参数并将其传递给 TIME_FORMAT() 函数,通过选择一个合适的参数来检索时间的特定部分,例如小时、分钟和秒。时间也可以以 12 小时制和 24 小时制格式检索。
- 我们也可以在时间后面打印 AM/PM。
让我们看几个实际的例子来更清楚地理解这个概念。我们将使用 MySQL 数据库来编写所有查询。 要创建数据库中的表,我们首先需要选择要在其中创建表的数据库。 然后,我们将编写以下查询来创建表。
 在上面的查询中,名为 ItemOrderTime 的列将存储时间,因为此列的数据类型设置为 'TIME'。 现在,我们将编写一个查询来向 items_tbl 表插入记录。
 我们将执行 SELECT 查询来验证所有记录是否已成功插入到 items_tbl 表中。
ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_OrderTime |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 04:13:52 | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 18:09:01 | 3 | 笔 | 10 | 50 | 2021-07-12 | 12:00:02 | 4 | Bottle | 1 | 250 | 2021-07-13 | 15:07:05 | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 19:18:43 | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05:05:05 | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 10:08:12 | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 08:16:58 | 9 | Marker | 2 | 30 | 2021-08-13 | 02:18:32 | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 07:17:30 |
上面的查询结果显示时间以存储的默认格式“HH:MM:SS”检索。 示例 1 编写一个查询来检索 item_tbl 中的所有值以及以 12 小时制(带有 AM/PM)表示的商品下单时间,以便以更易读的格式检索时间值。 查询 在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%r',以 12 小时制格式打印时间,后面带有 AM/PM。 您将获得以下表格作为输出: ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_OrderTime |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 04:13:52 AM | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 06:09:01 PM | 3 | 笔 | 10 | 50 | 2021-07-12 | 12:00:02 PM | 4 | Bottle | 1 | 250 | 2021-07-13 | 03:07:05 PM | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 07:18:43 PM | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05:05:05 AM | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 10:08:12 AM | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 08:16:58 AM | 9 | Marker | 2 | 30 | 2021-08-13 | 02:18:32 AM | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 07:17:30 AM |
示例 2 编写一个查询来检索 item_tbl 中的所有值以及以 12 小时制(带有 AM/PM)表示的商品下单时间,以便以更易读的格式检索时间值。 查询 在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%T %p'。'%T' 将以 24 小时制格式打印时间,'%p' 将为 24 小时制格式的时间添加 AM/PM。 您将获得以下表格作为输出: ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_OrderTime |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 04:13:52 AM | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 18:09:01 PM | 3 | 笔 | 10 | 50 | 2021-07-12 | 12:00:02 PM | 4 | Bottle | 1 | 250 | 2021-07-13 | 15:07:05 PM | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 19:18:43 PM | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05:05:05 AM | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 10:08:12 AM | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 08:16:58 AM | 9 | Marker | 2 | 30 | 2021-08-13 | 02:18:32 AM | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 07:17:30 AM |
示例 3 编写一个查询来检索 item_tbl 中的所有值以及以 24 小时制表示的商品下单小时。 查询 在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%H',以 24 小时制格式专门打印下单小时。大写 H 表示小时将以 24 小时制格式打印。 您将获得以下表格作为输出: ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_OrderHour |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 04 | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 18 | 3 | 笔 | 10 | 50 | 2021-07-12 | 12 | 4 | Bottle | 1 | 250 | 2021-07-13 | 15 | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 19 | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05 | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 10 | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 08 | 9 | Marker | 2 | 30 | 2021-08-13 | 02 | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 07 |
示例 4 编写一个查询来检索 item_tbl 中的所有值以及以 12 小时制表示的商品下单小时。 查询 在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%h',以 12 小时制格式专门打印下单小时。小写 'h' 表示小时将以 12 小时制格式打印。 您将获得以下表格作为输出: ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_OrderHour |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 04 | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 6 | 3 | 笔 | 10 | 50 | 2021-07-12 | 12 | 4 | Bottle | 1 | 250 | 2021-07-13 | 03 | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 07 | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05 | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 10 | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 08 | 9 | Marker | 2 | 30 | 2021-08-13 | 02 | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 07 |
示例 5 编写一个查询来检索 item_tbl 中的所有值以及从完整的下单时间中仅获取商品下单的分钟。 查询 在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%i',以专门打印下单的分钟。小写 'i' 表示将从完整的 'Item_OrderTime' 中打印分钟。 您将获得以下表格作为输出: ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_OrderMinute |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 13 | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 09 | 3 | 笔 | 10 | 50 | 2021-07-12 | 00 | 4 | Bottle | 1 | 250 | 2021-07-13 | 07 | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 18 | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05 | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 08 | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 16 | 9 | Marker | 2 | 30 | 2021-08-13 | 18 | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 17 |
示例 6 编写一个查询来检索 item_tbl 中的所有值以及从完整的下单时间中仅获取商品下单的秒。 在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%S',以专门打印下单的秒。大写 'S' 表示将从完整的 'Item_OrderTime' 中打印分钟。 您将获得以下表格作为输出: ID | Item_Name(项目名称) | Item_Quantity(项目数量) | Item_Price(项目价格) | Item_OrderDate | Item_Order_Seconds |
---|
1 | 肥皂 | 5 | 200 | 2021-07-08 | 52 | 2 | Toothpaste(牙膏) | 2 | 80 | 2021-07-10 | 01 | 3 | 笔 | 10 | 50 | 2021-07-12 | 02 | 4 | Bottle | 1 | 250 | 2021-07-13 | 05 | 5 | Brush(牙刷) | 3 | 90 | 2021-07-15 | 43 | 6 | Notebooks(笔记本) | 10 | 1000 | 2021-07-26 | 05 | 7 | Handkerchief(手帕) | 3 | 100 | 2021-07-28 | 12 | 8 | Chips Packet | 5 | 50 | 2021-07-30 | 58 | 9 | Marker | 2 | 30 | 2021-08-13 | 32 | 10 | Scissors(剪刀) | 1 | 60 | 2021-08-13 | 20 |
注意:在上面的查询中使用小写 's' 也会得到相同的结果。
|