MariaDB
 sql >> база данни >  >> RDS >> MariaDB

4 функции за получаване на час от времева стойност в MariaDB

По-долу са дадени 4 функции, които ви позволяват да върнете часа от времева стойност в MariaDB.

HOUR() Функция

HOUR() функцията връща часа за даден TIME или DATETIME изразяване. Той приема един аргумент, който е времето, от което искате да извлечете часа.

Пример:

SELECT HOUR('03:45:30'); 

Резултат:

+-----------------+| ЧАС('03:45:30') |+------------------+| 3 |+------------------+

За стойности за времето от деня той връща часа като число в диапазона 0 до 23 . Въпреки това, диапазонът от TIME стойностите могат да бъдат много по-големи и следователно върнатата стойност може да бъде много по-висока от 23 . По-конкретно, TIME стойностите могат да бъдат в диапазона '-838:59:59.999999' до '838:59:59.999999' .

Ето пример с по-голяма част от часа:

SELECT HOUR('838:45:30'); 

Резултат:

+------------------+| ЧАС('838:45:30') |+-------------------+| 838 |+------------------+

Ако времето е извън приетия диапазон за TIME стойности, връщаната стойност е 838 с предупреждение.

TIME стойностите също могат да бъдат отрицателни. В такива случаи HOUR() връща положителна стойност.

EXTRACT() Функция

EXTRACT() функцията ви позволява да извлечете определена единица от стойността за дата/час. Следователно можете да го използвате, за да извлечете часа (както и други единици) от стойността на времето.

Пример:

SELECT EXTRACT(HOUR FROM '10:47:01'); 

Резултат:

+-------------------------------+| ЕКСТРАКТ(ЧАС ОТ '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 Час с 2 цифри между 00-23.
%h Час с 2 цифри между 01-12.
%I Час с 2 цифри между 01-12.
%k Час с 1 цифра между 0-23.
%l Час с 1 цифра между 1-12.

TIME_FORMAT() функцията приема подмножество от форматни низове, които могат да се използват с DATE_FORMAT() функция. Вижте MariaDB Format Strings за пълен списък с низове/спецификатори на формат, които могат да се използват с DATE_FORMAT() . TIME_FORMAT() функцията приема спецификатори на формат само за часове, минути и секунди. Всеки друг спецификатор на формат води до null или 0 се връща.

DATE_FORMAT() Функция

DATE_FORMAT() функцията ви позволява да форматирате стойност на дата или дата и час въз основа на низ за форматиране. Форматният низ указва как трябва да се форматира датата/часът.

Следователно можем да използваме същите спецификатори на формат, които използвахме с 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 |+------+------+------+------+------+

Подаване само на TIME value не го намалява съвсем с тази функция:

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 ред в комплект, 5 предупреждения (0,000 сек) 

Показване на предупрежденията:

SHOW WARNINGS; 

Резултат:

+--------+------+---------------------------- ---------+| Ниво | Код | Съобщение |+--------+------+------------------------------ --------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' |+--------+------+------------------- ------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да спрете или намалите SST операцията на клъстер Galera

  2. 5 функции за извличане на номера на седмицата от дата в MariaDB

  3. Изберете Всичко преди или след определен символ в MariaDB

  4. Инсталиране на Laravel на Ubuntu с поддръжка на Apache, MariaDB и PHP

  5. 4 начина да получите съпоставяне на база данни в MariaDB