全部产品
Search
文档中心

Lindorm:Fungsi waktu

更新时间:Jul 02, 2025

Fungsi waktu Lindorm digunakan untuk mengonversi data antara tipe tertentu dan tipe TIMESTAMP serta menghitung selisih hari antara dua timestamp. Topik ini menjelaskan fungsi waktu yang didukung oleh Lindorm beserta cara penggunaannya.

Mesin dan versi yang berlaku

Penting

Versi Lindorm SQL harus 2.8.7.0 atau lebih baru. Untuk informasi lebih lanjut tentang cara melihat versi Lindorm SQL, lihat Versi SQL.

Fungsi waktu yang didukung

Tabel berikut menjelaskan fungsi waktu yang didukung oleh Lindorm.

Fungsi

Deskripsi

DATE_FORMAT

Memformat timestamp dalam zona waktu sesi saat ini.

FROM_UNIXTIME

Mengonversi data dari tipe Number seperti BIGINT, INTEGER, SMALLINT, dan TINYINT menjadi timestamp dalam zona waktu sesi saat ini. Jika Anda menentukan dua parameter, format output didasarkan pada parameter kedua.

DATEDIFF

Menghitung selisih hari antara dua timestamp dalam zona waktu sesi saat ini.

UNIX_TIMESTAMP

Mengonversi timestamp atau string timestamp ke UNIX timestamp. Satuan: detik.

DATE_FORMAT

Memformat timestamp dalam zona waktu sesi saat ini. Untuk informasi lebih lanjut tentang cara melihat dan menentukan zona waktu sesi, lihat Tentukan Zona Waktu untuk Koneksi LindormTable.

Sintaksis

DATE_FORMAT(TIMESTAMP ts, STRING format)

Parameter

Parameter

Diperlukan

Deskripsi

ts

Ya

Timestamp yang ingin Anda format.

format

Ya

Spesifikasi format, seperti %<Huruf yang disimpan> atau %%. Lihat tabel berikut untuk spesifikasi format yang didukung.

Tabel berikut menjelaskan spesifikasi format yang didukung, output, dan deskripsi output.

Spesifikasi format

Output

Deskripsi

%a

Ming hingga Sab

Hari dalam seminggu, yang disingkat.

%b

Jan hingga Des

Bulan, yang disingkat.

%c

0 hingga 12

Bulan, yang merupakan nilai numerik.

%D

1st, 2nd, 3rd...

Hari dalam bulan, yang memiliki akhiran ordinal.

%d

00 hingga 31

Hari dalam bulan, yang merupakan nilai numerik dua digit.

%e

00 hingga 31

Hari dalam bulan, yang merupakan nilai numerik dua digit.

%f

000000 hingga 999999

Jumlah mikrodetik.

%H

00 hingga 23

Jam dalam sistem 24 jam, yang merupakan nilai numerik dua digit.

%h

01 hingga 12

Jam dalam sistem 12 jam, yang merupakan nilai numerik dua digit.

%I

01 hingga 12

Jam dalam sistem 12 jam, yang merupakan nilai numerik dua digit.

%i

00 hingga 59

Menit, yang merupakan nilai numerik dua digit.

%j

001 hingga 366

Hari dalam setahun, yang merupakan nilai numerik tiga digit.

%k

0 hingga 23

Jam dalam sistem 24 jam, yang merupakan nilai numerik.

%l

1~ hingga 12

Jam dalam sistem 12 jam, yang merupakan nilai numerik.

%M

Januari hingga Desember

Bulan, yang mencakup nama lengkap.

%m

01 hingga 12

Bulan, yang merupakan nilai numerik dua digit.

%p

AM atau PM

Pagi atau sore.

%r

hh:mm:ss AM/PM

Jam 12-jam dalam format hh:mm:ss, yang mencakup informasi pagi (AM) atau sore (PM).

%S

00 hingga 59

Detik dalam jam, yang merupakan nilai numerik dua digit.

%s

00 hingga 59

Detik dalam jam, yang merupakan nilai numerik dua digit.

%T

hh:mm:ss

Jam 24-jam dalam format hh:mm:ss.

%W

Minggu hingga Sabtu

Hari dalam seminggu, yang dalam nama lengkap.

%w

0 hingga 6

Hari dalam seminggu, yang merupakan nilai numerik. Contohnya, 0 menunjukkan Minggu dan 1 menunjukkan Senin.

%Y

Nilai numerik empat digit

Tahun. Contoh: 2025.

%y

Nilai numerik dua digit berdasarkan dua digit terakhir tahun.

Tahun. Contohnya, nilai 24 menunjukkan Tahun 2024.

%%

%

Karakter %.

%x

x

Huruf lain selain huruf yang disimpan yang terkandung dalam spesifikasi format sebelumnya. Contohnya, huruf U bukan huruf yang disimpan. Spesifikasi format %U mewakili huruf U.

Penting

Jika Anda tidak mengonfigurasi spesifikasi format, semua karakter yang tidak dimulai dengan % akan dikembalikan dalam format aslinya.

Contoh

Memformat timestamp 2024-01-01 17:20:35 dalam zona waktu sesi saat ini sebagai at 17:20:35 on Jan 1st, 2024.

SELECT DATE_FORMAT('2024-01-01 17:20:35', 'at %T on %b %D, %Y');

Output sampel:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 17:20:35 on JAN 1st, 2024 |
+------------------------------+

Hasil yang dikembalikan adalah string yang formatnya didasarkan pada spesifikasi format. String tersebut mewakili timestamp dalam zona waktu sesi saat ini.

FROM_UNIXTIME

Mengonversi data dari tipe Number seperti BIGINT, INTEGER, SMALLINT, dan TINYINT menjadi timestamp dalam zona waktu sesi saat ini. Jika Anda menentukan dua parameter, format output didasarkan pada parameter kedua.

Catatan

Nilai tipe Number dalam detik. Hingga tiga digit valid dipertahankan.

Sintaksis

  • Mengonversi data tipe Number menjadi timestamp dalam zona waktu sesi saat ini.

    FROM_UNIXTIME (Number seconds)
  • Mengonversi data tipe Number menjadi timestamp dalam zona waktu sesi saat ini, lalu memformat timestamp tersebut.

    FROM_UNIXTIME (Number seconds, STRING format)

Parameter

Parameter

Diperlukan

Deskripsi

seconds

Ya

Timestamp UNIX. Satuan: detik. Hingga tiga tempat desimal dipertahankan.

Nilai parameter seconds menunjukkan jumlah detik yang telah berlalu sejak 00:00:00 pada 1 Januari 1970. Waktu harus dalam UTC. Fungsi FROM_UNIXTIME mengonversi nilai ini menjadi timestamp dalam zona waktu sesi saat ini.

format

Tidak

Spesifikasi format. Untuk informasi lebih lanjut, lihat Parameter.

Contoh

  • Contoh 1:

    1. Mengonversi timestamp UNIX 10.1578 menjadi timestamp dalam zona waktu sesi saat ini.

      SELECT FROM_UNIXTIME(10.1578);

      Output sampel:

      +-------------------------+
      | EXPR$0                  |
      +-------------------------+
      | 1970-01-01 08:00:10.158 |
      +-------------------------+
    2. Mengubah bidang time_zone menjadi +03:00 dan mengonversi timestamp UNIX 10.1578 menjadi timestamp dalam zona waktu baru.

      -- Ubah bidang time_zone menjadi +03:00.
      SET @@time_zone='+03:00';
      
      -- Konversi ke timestamp dalam zona waktu baru.
      SELECT FROM_UNIXTIME(10.1578);
      Catatan

      Hanya protokol MySQL yang memungkinkan Anda mengubah zona waktu koneksi. Untuk informasi lebih lanjut, lihat Gunakan Protokol MySQL untuk Mengembangkan Aplikasi (Disarankan) dan Gunakan Klien MySQL untuk Terhubung dan Menggunakan LindormTable.

      Output sampel:

      +-------------------------+
      | EXPR$0                  |
      +-------------------------+
      | 1970-01-01 03:00:10.158 |
      +-------------------------+
  • Contoh 2:

    1. Mengonversi timestamp UNIX 10.1578 menjadi timestamp dalam zona waktu sesi saat ini lalu memformat timestamp tersebut.

      SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');

      Output sampel:

      +------------------------------+
      | EXPR$0                       |
      +------------------------------+
      | at 08:00:10 on JAN 1st, 1970 |
      +------------------------------+
    2. Mengubah bidang time_zone menjadi +03:00, mengonversi timestamp UNIX 10.1578 menjadi timestamp dalam zona waktu baru, lalu memformat timestamp tersebut.

      -- Ubah bidang time_zone menjadi +03:00.
      SET @@time_zone='+03:00';
      
      -- Konversi ke timestamp dalam zona waktu baru.
      SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');

      Output sampel:

      +------------------------------+
      | EXPR$0                       |
      +------------------------------+
      | at 03:00:10 on JAN 1st, 1970 |
      +------------------------------+

DATEDIFF

Menghitung selisih hari antara dua timestamp dalam zona waktu sesi saat ini.

Untuk menghitung selisih, Anda dapat mengurangi nilai timestamp kedua dari nilai timestamp pertama. Bagian berikut menjelaskan hasilnya:

  • Jika hasilnya positif, timestamp pertama mewakili tanggal yang lebih akhir.

  • Jika hasilnya negatif, timestamp pertama mewakili tanggal yang lebih awal.

  • Jika hasilnya 0, kedua timestamp jatuh pada hari yang sama.

Penting

Sistem secara otomatis hanya membandingkan nilai tanggal, tanpa memperhatikan informasi jam, menit, dan detik.

Sintaksis

DATEDIFF(TIMESTAMP ts1, TIMESTAMP ts2)

Parameter

Parameter

Diperlukan

Deskripsi

ts1

Ya

Timestamp pertama.

ts2

Ya

Timestamp kedua.

Contoh

  • Contoh 1:

    SELECT DATEDIFF('2024-01-01 15:30:00', '2024-01-02 00:59:59');

    Output sampel:

    +--------+
    | EXPR$0 |
    +--------+
    |     -1 |
    +--------+
  • Contoh 2:

    SELECT DATEDIFF('2024-01-05 15:30:00', '2024-01-02 00:59:59');

    Output sampel:

    +--------+
    | EXPR$0 |
    +--------+
    |      3 |
    +--------+
  • Contoh 3:

    SELECT DATEDIFF('2024-01-02 15:30:00', '2024-01-02 00:59:59');

    Output sampel:

    +--------+
    | EXPR$0 |
    +--------+
    |      0 |
    +--------+

UNIX_TIMESTAMP

Mengonversi timestamp atau string timestamp menjadi UNIX timestamp hingga detik dan mengembalikan data tipe DOUBLE di kolom tertentu.

Ketika parameter ts menunjukkan timestamp, tiga tempat desimal dipertahankan dalam nilai yang dikembalikan. Ketika parameter ts menunjukkan string timestamp, string timestamp tersebut mewakili timestamp dalam zona waktu sesi saat ini dan enam tempat desimal dipertahankan dalam nilai yang dikembalikan.

Penting
  • Versi LindormTable harus 2.8.0 atau lebih baru dan versi Lindorm SQL harus 2.9.0.0 atau lebih baru. Anda dapat melihat versi LindormTable dan Lindorm SQL serta memperbarui versi minor LindormTable ke 2.8.0 atau lebih baru di konsol Lindorm.

  • Fungsi UNIX_TIMESTAMP dapat digunakan dalam proyeksi dan klausa WHERE dari pernyataan SELECT dan juga dapat digunakan dalam klausa VALUES dari pernyataan UPSERT.

Sintaksis

UNIX_TIMESTAMP (ts)

Parameter

Parameter

Diperlukan

Deskripsi

ts

Ya

Timestamp dalam zona waktu sesi saat ini. Tipe data harus TIMESTAMP atau VARCHAR.

Contoh

Buat tabel bernama t1. Contoh kode:

-- Buat tabel bernama t1.
CREATE TABLE t1(p1 INT, c1 TIMESTAMP, c2 VARCHAR, c3 DOUBLE, PRIMARY KEY(p1));

-- Masukkan data ke dalam tabel.
UPSERT INTO t1(p1, c1, c2, c3) VALUES 
(1, '2025-01-01 08:30:00', '2025-01-01 08:30:00', '12.24'),
(2, '1970-01-01 08:00:00.123', '1970-01-01 08:00:00.123', '10.32'),
(3, '1970-01-01 08:00:10.13579', '1970-01-01 08:00:10.13579', '10.12'),
(4, '1970-01-01 08:00:10.123456789', '1970-01-01 08:00:10.123456789', '17.33');
  • Contoh 1: Kueri UNIX timestamp yang sesuai dengan timestamp atau string timestamp.

    SELECT p1, UNIX_TIMESTAMP(c1), UNIX_TIMESTAMP(c2) FROM t1;

    Output sampel:

    +----+------------+------------+
    | p1 | EXPR$1     | EXPR$2     |
    +----+------------+------------+
    | 1  | 1735691400 | 1735691400 |
    | 2  | 0.123      | 0.123      |
    | 3  | 10.135     | 10.13579   |
    | 4  | 10.123     | 10.123457  |
    +----+------------+------------+
  • Contoh 2: Hitung jumlah rekaman yang memenuhi kondisi UNIX_TIMESTAMP(c1) > 10.

    SELECT COUNT(*) FROM t1 WHERE UNIX_TIMESTAMP(c1) > 10;

    Output sampel:

    +--------+
    | EXPR$0 |
    +--------+
    | 3      |
    +--------+
  • Contoh 3: Tulis hasil fungsi UNIX_TIMESTAMP ke kolom c3 yang bertipe data DOUBLE.

    UPSERT INTO t1(p1, c3) VALUES(1, UNIX_TIMESTAMP('1970-01-01 08:00:00.123'));

    Verifikasi Hasil

    Anda dapat mengeksekusi pernyataan SELECT * FROM t1 untuk memeriksa apakah operasi penulisan berhasil.