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

4 начина за отделяне на часове, минути и секунди от времева стойност в MariaDB

MariaDB има няколко функции, които ви позволяват да извличате различни части за дата и час от стойности за дата/час. Можете да ги използвате, за да разделите всеки компонент за дата/час в отделна колона, ако е необходимо.

По-долу са изброени четири начина за извличане на часовете, минутите и секундите от времева стойност в MariaDB. Като бонус ще включим и микросекунди.

HOUR() , MINUTE() , SECOND() и MICROSECOND() Функции

HOUR() , MINUTE() и SECOND() функциите извличат часовете, минутите и секундите съответно от стойността на дата или дата и час.

И ако работите с по-висока точност, можете да използвате MICROSECOND() функция за връщане на микросекундната част.

Ето пример за използване на тези функции за връщане на всеки компонент от време в неговата собствена колона:

SELECT 
    HOUR('10:45:30.123456') AS "Hours",
    MINUTE('10:45:30.123456') AS "Minutes",
    SECOND('10:45:30.123456') AS "Seconds",
    MICROSECOND('10:45:30.123456') AS "Microseconds";

Резултат:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    10 |      45 |      30 |       123456 |
+-------+---------+---------+--------------+

TIME стойностите могат да бъдат в диапазона '-838:59:59.999999' до '838:59:59.999999' .

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

Ето отрицателна времева стойност:

SELECT 
    HOUR('-10:45:30.123456') AS "Hours",
    MINUTE('-10:45:30.123456') AS "Minutes",
    SECOND('-10:45:30.123456') AS "Seconds",
    MICROSECOND('-10:45:30.123456') AS "Microseconds";

Резултат:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    10 |      45 |      30 |       123456 |
+-------+---------+---------+--------------+

EXTRACT() Функция

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

Пример:

SELECT 
    EXTRACT(HOUR FROM '10:45:30.123456') AS "Hours",
    EXTRACT(MINUTE FROM '10:45:30.123456') AS "Minutes",
    EXTRACT(SECOND FROM '10:45:30.123456') AS "Seconds",
    EXTRACT(MICROSECOND FROM '10:45:30.123456') AS "Microseconds";

Резултат:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    10 |      45 |      30 |       123456 |
+-------+---------+---------+--------------+

TIME_FORMAT() Функция

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

Следователно можете да използвате тази функция, за да връщате отделно различните времеви части.

Пример:

SELECT 
    TIME_FORMAT('10:07:30.123456', '%H') AS "Hours",
    TIME_FORMAT('10:07:30.123456', '%i') AS "Minutes",
    TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds",
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds";

Резултат:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
| 10    | 07      | 30      | 123456       |
+-------+---------+---------+--------------+

Възможно е също да върнете всички времеви компоненти поотделно, но в една и съща колона.

Ето пример за това, което имам предвид:

SELECT TIME_FORMAT('10:07:30.123456', '%H %i %s %f');

Резултат:

+-----------------------------------------------+
| TIME_FORMAT('10:07:30.123456', '%H %i %s %f') |
+-----------------------------------------------+
| 10 07 30 123456                               |
+-----------------------------------------------+

TIME_FORMAT() функцията приема подмножество от форматни низове, които могат да се използват с DATE_FORMAT() функция.

Има няколко възможни спецификатора на формата за часовата част. Спецификаторът на формата, използван по-горе, връща часа с две цифри между 00 и 23 . Вижте 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 10:07:30.123456', '%H') AS "Hours",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%i') AS "Minutes",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%s') AS "Seconds",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%f') AS "Microseconds";

Резултат:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
| 10    | 07      | 30      | 123456       |
+-------+---------+---------+--------------+

Подаване само на TIME стойност не работи с тази функция:

SELECT 
    DATE_FORMAT('10:07:30.123456', '%H') AS "Hours",
    DATE_FORMAT('10:07:30.123456', '%i') AS "Minutes",
    DATE_FORMAT('10:07:30.123456', '%s') AS "Seconds",
    DATE_FORMAT('10:07:30.123456', '%f') AS "Microseconds";

Резултат:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
| NULL  | NULL    | NULL    | NULL         |
+-------+---------+---------+--------------+
1 row in set, 4 warnings (0.003 sec)

Нека видим предупреждението:

SHOW WARNINGS;

Резултат:

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
| Warning | 1292 | Incorrect datetime value: '10:07:30.123456' |
+---------+------+---------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате механизма за отказване на MaxScale

  2. Как работи SYS_GUID() в MariaDB

  3. Мигриране от MySQL Enterprise към MariaDB 10.3

  4. Четири неща, които не знаехте за Amazon Aurora

  5. 20 съвета:Подгответе вашата база данни за Черен петък и Кибер понеделник