In MariaDB, HOUR() is a built-in date and time function that returns the hour from a given time expression.
It accepts one argument, which is the time you want to extract the hour from.
For time-of-day values, it returns the hour as a number in the range 0 to 23. However, the range of TIME values can be much larger, and therefore, the returned value can be much higher than 23.
The return value is always positive, even if a negative time is provided.
Syntax
The syntax goes like this:
HOUR(time)
Where time is the time expression to get the hour from.
Example
Here’s an example:
SELECT HOUR('10:30:45');
Result:
+------------------+
| HOUR('10:30:45') |
+------------------+
| 10 |
+------------------+
Datetime Values
It also works with datetime values:
SELECT HOUR('2030-02-01 10:30:45');
Result:
+-----------------------------+
| HOUR('2030-02-01 10:30:45') |
+-----------------------------+
| 10 |
+-----------------------------+
Larger Hours
TIME values can be in the range '-838:59:59.999999' to '838:59:59.999999'.
Therefore, the hour portion can be much higher than 23:
SELECT HOUR('578:30:45');
Result:
+-------------------+
| HOUR('578:30:45') |
+-------------------+
| 578 |
+-------------------+
Negative Times
Negative times return a positive result.
Example
SELECT HOUR('-578:30:45');
Result:
+--------------------+
| HOUR('-578:30:45') |
+--------------------+
| 578 |
+--------------------+
Out of Range Hours
Time values outside the range '-838:59:59.999999' to '838:59:59.999999' return 838.
Example:
SELECT HOUR('978:30:45');
Result (using vertical output):
+-------------------+
| HOUR('978:30:45') |
+-------------------+
| 838 |
+-------------------+
Current Date
We can pass NOW() as the datetime argument to use the current time:
SELECT
NOW(),
HOUR(NOW());
Result:
+---------------------+-------------+ | NOW() | HOUR(NOW()) | +---------------------+-------------+ | 2021-05-16 10:50:02 | 10 | +---------------------+-------------+
Invalid Arguments
When passed an invalid argument, HOUR() returns null:
SELECT HOUR('Ten Thirty AM');
Result:
+-----------------------+
| HOUR('Ten Thirty AM') |
+-----------------------+
| NULL |
+-----------------------+
Missing Argument
Calling HOUR() with the wrong number of arguments, or without passing any arguments, results in an error:
SELECT HOUR();
Result:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
And another example:
SELECT HOUR('10:30:45', '06:30:45');
Result:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45')' at line 1