MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

4 Cara untuk Memisahkan Jam, Menit, dan Detik dari Nilai Waktu di MariaDB

MariaDB memiliki beberapa fungsi yang memungkinkan Anda mengekstrak berbagai bagian tanggal dan waktu dari nilai tanggal/waktu. Anda dapat menggunakan ini untuk memisahkan setiap komponen tanggal/waktu ke dalam kolomnya sendiri jika diperlukan.

Di bawah ini adalah empat cara untuk mengekstrak jam, menit, dan detik dari nilai waktu di MariaDB. Sebagai bonus, kami juga akan menyertakan mikrodetik.

HOUR() , MINUTE() , SECOND() dan MICROSECOND() Fungsi

HOUR() , MINUTE() , dan SECOND() fungsi mengekstrak jam, menit, dan detik dari tanggal atau nilai datetime masing-masing.

Dan jika Anda bekerja dengan presisi yang lebih tinggi, Anda dapat menggunakan MICROSECOND() berfungsi untuk mengembalikan bagian mikrodetik.

Berikut ini contoh penggunaan fungsi ini untuk mengembalikan setiap komponen waktu di kolomnya sendiri:

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

Hasil:

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

TIME nilai bisa dalam rentang '-838:59:59.999999' ke '838:59:59.999999' .

TIME nilai juga bisa negatif. Dalam kasus seperti itu, nilai yang dikembalikan masih positif.

Berikut adalah nilai waktu negatif:

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

Hasil:

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

EXTRACT() Fungsi

EXTRACT() fungsi memungkinkan Anda untuk mengekstrak unit tertentu dari nilai tanggal/waktu. Oleh karena itu, Anda dapat menggunakannya untuk mengekstrak jam, menit, detik, dan mikrodetik dari nilai waktu.

Contoh:

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

Hasil:

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

TIME_FORMAT() Fungsi

TIME_FORMAT() fungsi memungkinkan Anda untuk memformat nilai waktu berdasarkan string format. String format menentukan bagaimana waktu harus diformat.

Karena itu Anda dapat menggunakan fungsi ini untuk mengembalikan berbagai bagian waktu secara terpisah.

Contoh:

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

Hasil:

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

Anda juga dapat mengembalikan semua komponen waktu secara terpisah, tetapi dalam kolom yang sama.

Ini contoh yang saya maksud:

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

Hasil:

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

TIME_FORMAT() fungsi menerima subset format string yang dapat digunakan dengan DATE_FORMAT() fungsi.

Ada beberapa kemungkinan penentu format untuk bagian jam. Penentu format yang digunakan di atas mengembalikan jam dengan dua digit di antara 00 dan 23 . Lihat MariaDB Format Strings untuk daftar lengkap format string/specifier yang dapat digunakan dengan DATE_FORMAT() . TIME_FORMAT() fungsi hanya menerima penentu format untuk jam, menit, dan detik/sub detik. Penentu format lainnya menghasilkan null atau 0 dikembalikan.

DATE_FORMAT() Fungsi

DATE_FORMAT() fungsi memungkinkan Anda untuk memformat tanggal atau nilai datetime berdasarkan string format. String format menentukan bagaimana tanggal/waktu harus diformat.

Oleh karena itu, kami dapat menggunakan penentu format yang sama dengan yang kami gunakan dengan TIME_FORMAT() fungsi pada contoh sebelumnya. Namun, DATE_FORMAT() tidak menerima TIME nilai, jadi kita harus melewati DATETIME nilai.

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

Hasil:

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

Melewati TIME nilai tidak berfungsi dengan fungsi ini:

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

Hasil:

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

Mari kita lihat peringatannya:

SHOW WARNINGS;

Hasil:

+---------+------+---------------------------------------------+
| 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. MariaDB &Data Eksternal

  2. Memantau Galera Cluster untuk MySQL atau MariaDB - Memahami Metrik (Diperbarui)

  3. Apa yang Baru di MariaDB Server 10.5?

  4. MariaDB BENCHMARK() Dijelaskan

  5. MariaDB JSON_LENGTH() Dijelaskan