从MariaDB中的时间值获取小时的4个函数
以下是 4 个函数,使您能够从 MariaDB 中的时间值返回小时。
函数HOUR()
该函数返回给定表达式的小时。它接受一个参数,即您要从中提取小时的时间。HOUR()TIME``DATETIME
例:
SELECT HOUR('03:45:30');
结果:
+——————+ | HOUR(‘03:45:30’) | +——————+ | 3 | +——————+
对于时间值,它将小时作为范围中的数字返回。但是,值的范围可以大得多,因此,返回的值可以远大于。具体来说,值可以在范围内。0``23``TIME``23``TIME``'-838:59:59.999999'``'838:59:59.999999'
下面是一个具有较大小时部分的示例:
SELECT HOUR('838:45:30');
结果:
+——————-+ | HOUR(‘838:45:30’) | +——————-+ | 838 | +——————-+
如果时间超出值的接受范围,则返回值带有警告。TIME``838
TIME值也可以为负数。在这种情况下,返回一个正值。HOUR()
函数EXTRACT()
该函数允许您从日期/时间值中提取指定的单位。因此,您可以使用它从时间值中提取小时(以及其他单位)。EXTRACT()
例:
SELECT EXTRACT(HOUR FROM '10:47:01');
结果:
+——————————-+ | EXTRACT(HOUR FROM ‘10:47:01’) | +——————————-+ | 10 | +——————————-+
函数TIME_FORMAT()
该函数允许您根据格式字符串设置时间值的格式。格式字符串指定应如何设置时间格式。TIME_FORMAT()
因此,您可以使用此函数从时间返回小时(以及分钟和秒)。有多种返回小时的选项。
下面是一个以各种形式返回小时的示例:
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l';
结果:
+——+——+——+——+——+ | %H | %h | %I | %k | %l | +——+——+——+——+——+ | 18 | 06 | 06 | 18 | 6 | +——+——+——+——+——+
以下是每个格式说明符的说明:
| 格式说明符 | 描述 |
|---|---|
%H |
小时,00-23 之间有 2 位数字。 |
%h |
小时,01-12 之间有 2 位数字。 |
%I |
小时,01-12 之间有 2 位数字。 |
%k |
小时,0-23 之间的 1 位数字。 |
%l |
小时,1-12 之间的 1 位数字。 |
该函数接受可与函数一起使用的格式字符串的子集。请参阅MariaDB格式字符串 获取可用于的格式字符串/说明符的完整列表。该函数仅接受小时、分钟和秒的格式说明符。任何其他格式说明符都会导致返回。TIME_FORMAT()``DATE_FORMAT()``DATE_FORMAT()``TIME_FORMAT()``null``0
函数DATE_FORMAT()
该函数允许您根据格式字符串格式化日期或日期时间值。格式字符串指定应如何设置日期/时间的格式。DATE_FORMAT()
因此,我们可以使用与上一个示例中的函数相同的格式说明符。但是,不接受 avalue,因此我们需要传递 avalue。TIME_FORMAT()``DATE_FORMAT()``TIME``DATETIME
SELECT
DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l';
结果:
+——+——+——+——+——+ | %H | %h | %I | %k | %l | +——+——+——+——+——+ | 18 | 06 | 06 | 18 | 6 | +——+——+——+——+——+
仅传递 avalue 并不能完全使用此函数来削减它:TIME
SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l';
结果:
+——+——+——+——+——+ | %H | %h | %I | %k | %l | +——+——+——+——+——+ | NULL | NULL | NULL | NULL | NULL | +——+——+——+——+——+ 1 row in set, 5 warnings (0.000 sec)
显示警告:
SHOW WARNINGS;
结果:
+———+——+————————————–+ | Level | Code | Message | +———+——+————————————–+ | Warning | 1292 | Incorrect datetime value: ‘18:45:30’ | | Warning | 1292 | Incorrect datetime value: ‘18:45:30’ | | Warning | 1292 | Incorrect datetime value: ‘18:45:30’ | | Warning | 1292 | Incorrect datetime value: ‘18:45:30’ | | Warning | 1292 | Incorrect datetime value: ‘18:45:30’ | +———+——+————————————–+