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 数据库来编写所有查询。

要创建数据库中的表,我们首先需要选择要在其中创建表的数据库。

然后,我们将编写以下查询来创建表。


TIME Datatype in SQL

在上面的查询中,名为 ItemOrderTime 的列将存储时间,因为此列的数据类型设置为 'TIME'。

现在,我们将编写一个查询来向 items_tbl 表插入记录。


TIME Datatype in SQL

我们将执行 SELECT 查询来验证所有记录是否已成功插入到 items_tbl 表中。


IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_OrderTime
1肥皂52002021-07-0804:13:52
2Toothpaste(牙膏)2802021-07-1018:09:01
310502021-07-1212:00:02
4Bottle12502021-07-1315:07:05
5Brush(牙刷)3902021-07-1519:18:43
6Notebooks(笔记本)1010002021-07-2605:05:05
7Handkerchief(手帕)31002021-07-2810:08:12
8Chips Packet5502021-07-3008:16:58
9Marker2302021-08-1302:18:32
10Scissors(剪刀)1602021-08-1307:17:30

上面的查询结果显示时间以存储的默认格式“HH:MM:SS”检索。

示例 1

编写一个查询来检索 item_tbl 中的所有值以及以 12 小时制(带有 AM/PM)表示的商品下单时间,以便以更易读的格式检索时间值。

查询

在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%r',以 12 小时制格式打印时间,后面带有 AM/PM。

您将获得以下表格作为输出:

IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_OrderTime
1肥皂52002021-07-0804:13:52 AM
2Toothpaste(牙膏)2802021-07-1006:09:01 PM
310502021-07-1212:00:02 PM
4Bottle12502021-07-1303:07:05 PM
5Brush(牙刷)3902021-07-1507:18:43 PM
6Notebooks(笔记本)1010002021-07-2605:05:05 AM
7Handkerchief(手帕)31002021-07-2810:08:12 AM
8Chips Packet5502021-07-3008:16:58 AM
9Marker2302021-08-1302:18:32 AM
10Scissors(剪刀)1602021-08-1307:17:30 AM

示例 2

编写一个查询来检索 item_tbl 中的所有值以及以 12 小时制(带有 AM/PM)表示的商品下单时间,以便以更易读的格式检索时间值。

查询

在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%T %p'。'%T' 将以 24 小时制格式打印时间,'%p' 将为 24 小时制格式的时间添加 AM/PM。

您将获得以下表格作为输出:

IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_OrderTime
1肥皂52002021-07-0804:13:52 AM
2Toothpaste(牙膏)2802021-07-1018:09:01 PM
310502021-07-1212:00:02 PM
4Bottle12502021-07-1315:07:05 PM
5Brush(牙刷)3902021-07-1519:18:43 PM
6Notebooks(笔记本)1010002021-07-2605:05:05 AM
7Handkerchief(手帕)31002021-07-2810:08:12 AM
8Chips Packet5502021-07-3008:16:58 AM
9Marker2302021-08-1302:18:32 AM
10Scissors(剪刀)1602021-08-1307:17:30 AM

示例 3

编写一个查询来检索 item_tbl 中的所有值以及以 24 小时制表示的商品下单小时。

查询

在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%H',以 24 小时制格式专门打印下单小时。大写 H 表示小时将以 24 小时制格式打印。

您将获得以下表格作为输出:

IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_OrderHour
1肥皂52002021-07-0804
2Toothpaste(牙膏)2802021-07-1018
310502021-07-1212
4Bottle12502021-07-1315
5Brush(牙刷)3902021-07-1519
6Notebooks(笔记本)1010002021-07-2605
7Handkerchief(手帕)31002021-07-2810
8Chips Packet5502021-07-3008
9Marker2302021-08-1302
10Scissors(剪刀)1602021-08-1307

示例 4

编写一个查询来检索 item_tbl 中的所有值以及以 12 小时制表示的商品下单小时。

查询

在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%h',以 12 小时制格式专门打印下单小时。小写 'h' 表示小时将以 12 小时制格式打印。

您将获得以下表格作为输出:

IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_OrderHour
1肥皂52002021-07-0804
2Toothpaste(牙膏)2802021-07-106
310502021-07-1212
4Bottle12502021-07-1303
5Brush(牙刷)3902021-07-1507
6Notebooks(笔记本)1010002021-07-2605
7Handkerchief(手帕)31002021-07-2810
8Chips Packet5502021-07-3008
9Marker2302021-08-1302
10Scissors(剪刀)1602021-08-1307

示例 5

编写一个查询来检索 item_tbl 中的所有值以及从完整的下单时间中仅获取商品下单的分钟。

查询

在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%i',以专门打印下单的分钟。小写 'i' 表示将从完整的 'Item_OrderTime' 中打印分钟。

您将获得以下表格作为输出:

IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_OrderMinute
1肥皂52002021-07-0813
2Toothpaste(牙膏)2802021-07-1009
310502021-07-1200
4Bottle12502021-07-1307
5Brush(牙刷)3902021-07-1518
6Notebooks(笔记本)1010002021-07-2605
7Handkerchief(手帕)31002021-07-2808
8Chips Packet5502021-07-3016
9Marker2302021-08-1318
10Scissors(剪刀)1602021-08-1317

示例 6

编写一个查询来检索 item_tbl 中的所有值以及从完整的下单时间中仅获取商品下单的秒。

在这里,TIME_FORMAT() 函数应用于 Item_OrderTime,参数为 '%S',以专门打印下单的秒。大写 'S' 表示将从完整的 'Item_OrderTime' 中打印分钟。

您将获得以下表格作为输出:

IDItem_Name(项目名称)Item_Quantity(项目数量)Item_Price(项目价格)Item_OrderDateItem_Order_Seconds
1肥皂52002021-07-0852
2Toothpaste(牙膏)2802021-07-1001
310502021-07-1202
4Bottle12502021-07-1305
5Brush(牙刷)3902021-07-1543
6Notebooks(笔记本)1010002021-07-2605
7Handkerchief(手帕)31002021-07-2812
8Chips Packet5502021-07-3058
9Marker2302021-08-1332
10Scissors(剪刀)1602021-08-1320

注意:在上面的查询中使用小写 's' 也会得到相同的结果。


下一个主题SQL BETWEEN