MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

4 sposoby na oddzielenie godzin, minut i sekund od wartości czasu w MariaDB

MariaDB ma kilka funkcji, które umożliwiają wyodrębnianie różnych części daty i godziny z wartości daty/czasu. Możesz ich użyć do oddzielenia każdego składnika daty/czasu do własnej kolumny, jeśli jest to wymagane.

Poniżej znajdują się cztery sposoby wyodrębniania godzin, minut i sekund z wartości czasu w MariaDB. Jako bonus uwzględnimy również mikrosekundy.

HOUR() , MINUTE() , SECOND() i MICROSECOND() Funkcje

HOUR() , MINUTE() i SECOND() Funkcje wyodrębniają godziny, minuty i sekundy odpowiednio z wartości daty lub daty i godziny.

A jeśli pracujesz z większą precyzją, możesz użyć MICROSECOND() funkcja, aby zwrócić część mikrosekund.

Oto przykład użycia tych funkcji do zwrócenia każdego komponentu czasu w jego własnej kolumnie:

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";

Wynik:

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

TIME wartości mogą należeć do zakresu '-838:59:59.999999' do '838:59:59.999999' .

TIME wartości mogą być również ujemne. W takich przypadkach zwracane wartości są nadal dodatnie.

Oto ujemna wartość czasu:

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";

Wynik:

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

EXTRACT() Funkcja

EXTRACT() funkcja pozwala na wyodrębnienie określonej jednostki z wartości daty/czasu. Dlatego możesz go użyć do wyodrębnienia godzin, minut, sekund i mikrosekund z wartości czasu.

Przykład:

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";

Wynik:

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

TIME_FORMAT() Funkcja

TIME_FORMAT() funkcja pozwala sformatować wartość czasu na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania czasu.

Możesz zatem użyć tej funkcji, aby oddzielnie zwrócić różne części czasu.

Przykład:

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";

Wynik:

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

Możliwe jest również zwrócenie wszystkich składników czasu osobno, ale w tej samej kolumnie.

Oto przykład tego, co mam na myśli:

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

Wynik:

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

TIME_FORMAT() funkcja akceptuje podzbiór ciągów formatujących, które mogą być używane z DATE_FORMAT() funkcjonować.

Istnieje kilka możliwych specyfikatorów formatu dla części godzinowej. Użyty powyżej specyfikator formatu zwraca godzinę z dwiema cyframi między 00 i 23 . Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę ciągów formatujących/specyfikatorów, których można używać z DATE_FORMAT() . TIME_FORMAT() funkcja akceptuje tylko specyfikatory formatu dla godzin, minut i sekund/subsekund. Każdy inny specyfikator formatu daje wynik null lub 0 zostanie zwrócony.

DATE_FORMAT() Funkcja

DATE_FORMAT() Funkcja umożliwia sformatowanie wartości daty lub daty i godziny na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania daty/godziny.

Dlatego możemy użyć tych samych specyfikatorów formatu, których użyliśmy w funkcji TIME_FORMAT() funkcji w poprzednim przykładzie. Jednak DATE_FORMAT() nie akceptuje TIME wartość, więc będziemy musieli przekazać DATETIME wartość.

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";

Wynik:

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

Mija tylko TIME wartość nie działa z tą funkcją:

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";

Wynik:

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

Zobaczmy ostrzeżenie:

SHOW WARNINGS;

Wynik:

+---------+------+---------------------------------------------+
| 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. Co nowego w MariaDB Server 10.5?

  2. MariaDB JSON_OBJECTAGG() Objaśnienie

  3. Funkcja SUM() w MariaDB

  4. Jak REGEXP działa w MariaDB

  5. Funkcje numeryczne MariaDB (pełna lista)