MySQL hour()函数

1. 简介
在MySQL中,hour()函数是用来获取给定时间表达式的小时部分的函数。它可以用于提取时间(时间戳或时间字符串)的小时数值,并返回一个整数。
2. 语法
hour(expr)
expr:一个日期/时间表达式,可以是时间戳或时间字符串,在函数内部会被自动转换为时间类型。
3. 返回值
hour()函数返回一个整数,代表给定时间表达式的小时部分。范围是从0到23。
4. 实例演示
让我们通过一些实例来了解hour()函数的用法。
4.1 提取当前时间的小时部分
SELECT HOUR(NOW());
-- 结果: 18 (假设当前时间为下午6点)
上述示例中,使用NOW()函数获取当前时间,并利用HOUR()函数提取其小时部分。
4.2 提取时间戳的小时部分
SELECT HOUR('2010-07-16 12:30:45');
-- 结果: 12
上述示例中,我们给定了一个时间戳字符串,并使用HOUR()函数提取其小时部分。
4.3 提取日期字符串的小时部分
SELECT HOUR('2022-11-05');
-- 结果: 0
上述示例中,我们给定了一个日期字符串,并使用HOUR()函数提取其小时部分。由于日期字符串中没有指定具体的时间,所以返回值为0。
4.4 提取NULL值的小时部分
SELECT HOUR(NULL);
-- 结果: NULL
上述示例中,我们使用HOUR()函数提取了一个NULL值的小时部分。由于NULL不代表具体的时间,所以返回值也为NULL。
5. 使用场景
hour()函数在许多场景下都很有用。下面列举了一些常见的使用场景。
5.1 查询某一小时内的数据
假设我们有一张orders表,其中有一个order_time字段表示订单的时间。我们希望查询某一小时内的订单。
SELECT *
FROM orders
WHERE HOUR(order_time) = 14;
上述示例中,我们使用了HOUR()函数来提取order_time字段的小时部分,并将其与需要查询的小时进行比较。
5.2 按小时统计数据
假设我们有一张logs表,其中有一个log_time字段表示日志的时间。我们希望按小时统计每个小时的日志数量。
SELECT HOUR(log_time) as hour, COUNT(*) as count
FROM logs
GROUP BY HOUR(log_time);
上述示例中,我们使用了HOUR()函数来提取log_time字段的小时部分,并按照小时进行分组。然后,使用COUNT(*)函数来计算每个小时的日志数量。
6. 总结
在本文中,我们详细介绍了MySQL中的hour()函数。我们了解了它的语法、返回值以及一些实际应用场景。
极客笔记