SQL TIME数据类型
- 在SQL中,当您需要在数据库的SQL表中存储时间时,有许多情况需要考虑。
- 要在SQL表中存储时间,您首先应该在表中创建一个能够存储时间的列。
- 如果您希望时间存储在表的列中,您需要创建一个具有TIME数据类型的列。
- TIME数据类型默认以”HH:MM:SS”格式存储时间。
- 使用SQL中的SELECT语句,您可以从SQL表的列中检索时间。
- 除了以存储格式检索时间之外,SQL中还有一个TIME_FORMAT()函数,可以以更易读的格式检索时间。
- 您可以以表中时间的默认格式检索时间,即”HH:MM:SS”,或者您还可以选择检索时间的特定部分,如小时、分钟和秒钟,通过选择适当的参数来根据我们的需求传递给TIME_FORMAT()函数。时间还可以以12小时和24小时制检索。
- 我们还可以输出时间后跟上AM/PM。
让我们通过一些实际示例更清楚地了解这个概念。我们将使用MySQL数据库来编写所有的查询。
要在数据库中创建一个表,在我们想要创建表的数据库中首先选择一个数据库。
mysql> USE dbs;
然后,我们将编写以下查询语句来创建一个表:
mysql> CREATE TABLE items_tbl(ID INT, Item_Name VARCHAR(20), Item_Quantity INT, Item_Price INT, Item_OrderDate DATE, Item_OrderTime TIME);
在上述查询中,列名为ItemOrderTime的列将存储时间,因为该列的数据类型已设置为’TIME’。
现在,我们将编写一个查询来在items_tbl表中插入记录。
mysql> INSERT INTO items_tbl(ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, Item_OrderTime) VALUES(1, "Soap", 5, 200, "2021-07-08", "04:13:52"), (2, "Toothpaste", 2, 80, "2021-07-10", "18:09:01"), (3, "Pen", 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");
我们将执行SELECT查询来验证所有记录是否成功插入items_tbl表中。
mysql> SELECT *FROM items_tbl;
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_OrderTime |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 04:13:52 |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 18:09:01 |
3 | Pen | 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小时格式显示,并附带上午/下午来以更可读的格式检索时间值。
查询:
mysql> SELECT ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, TIME_FORMAT (Item_OrderTime, "%r") AS Formatted_Time FROM items_tbl;
在这里,TIME_FORMAT()函数应用于Item_OrderTime,并以参数’%r’打印出12小时制的时间,后跟AM/PM。
您将得到以下表格作为输出:
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_OrderTime |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 04:13:52 AM |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 06:09:01 PM |
3 | Pen | 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一起检索,以便以更易读的格式检索时间值。
查询:
mysql> SELECT ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, TIME_FORMAT (Item_OrderTime, "%T %p") AS Formatted_Time FROM items_tbl;
在这里,TIME_FORMAT()函数应用于Item_OrderTime,并且参数为’%T %p’。’%T’将以24小时制打印时间,’%p’将在24小时制格式化的时间后添加上午/下午。
你将得到以下表格作为输出:
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_OrderTime |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 04:13:52 AM |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 18:09:01 PM |
3 | Pen | 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小时制格式显示。
查询语句:
mysql> SELECT ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, TIME_FORMAT (Item_OrderTime, "%H") AS Item_OrderHour FROM items_tbl;
在这里,TIME_FORMAT()函数应用于Item_OrderTime,并且使用参数’%H’来专门打印订单的小时。大写的H表示小时将以24小时制打印。
您将得到以下表格作为输出:
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_OrderHour |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 04 |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 18 |
3 | Pen | 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小时制格式显示。
查询:
mysql> SELECT ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, TIME_FORMAT (Item_OrderTime, "%h") AS Item_OrderHour FROM items_tbl;
在这里,TIME_FORMAT()函数被应用在Item_OrderTime上,使用参数’%h’来打印订单时间的小时。小写的 ‘h’ 表示小时将以12小时制打印。
你将得到以下表格作为输出:
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_OrderHour |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 04 |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 6 |
3 | Pen | 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中检索所有值,并仅获取整个订单时间下订单的分钟。
查询:
mysql> SELECT ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, TIME_FORMAT (Item_OrderTime, "%i") AS Item_OrderMinute FROM items_tbl;
在这里,TIME_FORMAT()函数应用于Item_OrderTime,使用参数’%i’来特定打印订单的分钟。小写的’i’表示将打印出整个’Item_OrderTime’中的分钟部分。
你将获得以下表格作为输出:
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_OrderMinute |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 13 |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 09 |
3 | Pen | 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表中检索所有值,并且只获取每个订单时间中的秒数。
mysql> SELECT ID, Item_Name, Item_Quantity, Item_Price, Item_OrderDate, TIME_FORMAT (Item_OrderTime, "%S") AS Item_OrderSeconds FROM items_tbl;
在这里,TIME_FORMAT()函数应用于Item_OrderTime,参数为’%S’,用于特定打印出订单的秒数。大写的’S’表示将打印出整个’Item_OrderTime’的分钟。
你将得到如下的表格作为输出:
ID | Item_Name | Item_Quantity | Item_Price | Item_OrderDate | Item_Order_Seconds |
---|---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 | 52 |
2 | Toothpaste | 2 | 80 | 2021-07-10 | 01 |
3 | Pen | 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’将产生相同的输出。