Topik ini menjelaskan fungsi tanggal dan waktu yang didukung oleh Hologres serta memberikan contoh penggunaannya.
Tipe | Fungsi | Fitur |
Fungsi konversi tipe data | Membuat tanggal dari tahun, bulan, dan hari. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung. | |
Mengonversi timestamp, integer, bilangan real, atau bilangan presisi ganda menjadi string. | ||
Mengonversi string menjadi tanggal. Secara default, hanya string dalam rentang tahun 1925 hingga 2282 yang dapat dikonversi. | ||
Mengonversi string menjadi timestamp atau timestamp menjadi tanggal. | ||
Fungsi dan operator untuk operasi dasar pada nilai tanggal dan waktu | Menambahkan sejumlah bulan tertentu ke tanggal yang ditentukan. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung. | |
Menambahkan atau mengurangi interval ke atau dari nilai tanggal dan waktu berdasarkan unit waktu yang ditentukan. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung. | ||
Menghitung perbedaan antara dua tanggal atau timestamp. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung. | ||
Mengembalikan jumlah bulan antara dua tanggal. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung. | ||
Mengembalikan tanggal hari pertama yang ditentukan setelah tanggal tertentu. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung. | ||
Menambahkan hari atau waktu. | ||
Mengurangi hari atau waktu. | ||
Mengalikan hari atau waktu. | ||
Membagi hari atau waktu. | ||
Fungsi pemotongan tanggal dan waktu | Mengekstrak bagian tertentu, seperti bagian tahun, bulan, hari, atau jam, dari timestamp. Fungsi ini setara dengan fungsi EXTRACT. | |
Memotong data tanggal dan waktu ke unit waktu yang ditentukan. | ||
Mengekstrak bagian tertentu, seperti bagian tahun, bulan, hari, atau jam, dari timestamp. | ||
Mengembalikan hari terakhir dari bulan di mana nilai tanggal jatuh. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung. | ||
Mengembalikan hari terakhir dari bulan di mana nilai tanggal jatuh. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung. | ||
Membulatkan tanggal ke nilai terdekat berdasarkan unit waktu. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung. | ||
Memotong tanggal atau timestamp ke unit waktu yang ditentukan. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung. | ||
Fungsi pengambilan tanggal dan waktu saat ini | Mengembalikan tanggal dan waktu saat ini. | |
Mengembalikan tanggal saat ini. | ||
Mengembalikan waktu mulai transaksi saat ini. Fungsi ini setara dengan fungsi TRANSACTION_TIMESTAMP atau NOW. | ||
Mengembalikan waktu saat ini tanpa informasi zona waktu. | ||
Mengembalikan waktu mulai transaksi saat ini. Fungsi ini setara dengan fungsi TRANSACTION_TIMESTAMP atau CURRENT_TIMESTAMP. | ||
Mengembalikan waktu mulai pernyataan saat ini. | ||
Mengembalikan tanggal dan waktu saat ini. Fungsi ini mirip dengan fungsi CLOCK_TIMESTAMP. Nilai yang dikembalikan oleh fungsi TIMEOFDAY adalah string teks yang diformat. | ||
Mengembalikan waktu mulai transaksi saat ini. Fungsi ini setara dengan fungsi CURRENT_TIMESTAMP atau NOW. | ||
Lainnya | Memeriksa apakah tanggal bertipe DATE merupakan angka terbatas. |
Fungsi konversi tanggal dan waktu
TO_CHAR
Deskripsi:
Mengonversi timestamp menjadi string. Secara default, hanya timestamp dalam rentang tahun 1925 hingga 2282 yang dapat dikonversi.
TO_CHAR(TIMESTAMP|TIMESTAMPTZ, TEXT)Catatan penggunaan:
Anda dapat menggunakan fungsi ini untuk mengonversi timestamp menjadi string dalam format 24 jam atau 12 jam. HH24 menunjukkan format 24 jam, dan HH12 menunjukkan format 12 jam. Secara default, format 12 jam digunakan.
YYYYsesuai dengan tahun,MMke bulan,DDke hari,HHke jam,MIke menit, danSSke detik.Mulai dari Hologres V1.1.31, Anda dapat menjalankan
set hg_experimental_functions_use_pg_implementation = 'to_char';atauset hg_experimental_functions_use_pg_implementation = 'to_char,to_date,to_timestamp';sebelum pernyataan SQL untuk mendukung semua rentang waktu.CatatanJika Anda menjalankan salah satu pernyataan tersebut untuk mengonfigurasi parameter GUC, kinerja query akan menurun sekitar 50%. Pada Hologres V1.1.42 dan versi lebih baru, kinerja query menurun sekitar 20%.
Mengonversi integer menjadi string.
TO_CHAR(INT, TEXT)Mengonversi bilangan real atau bilangan presisi ganda menjadi string.
TO_CHAR(DOUBLE PRECISION, TEXT)
Nilai Kembali:
Nilai bertipe TEXT dikembalikan.
Contoh:
Mengonversi timestamp menjadi string dalam format 24 jam.
-- Hasil yang dikembalikan: 13:48:30. SELECT TO_CHAR(current_timestamp, 'HH24:MI:SS'); -- Hasil yang dikembalikan: 2024-08-05. SELECT TO_CHAR(current_timestamp, 'YYYY-MM-DD');Mengonversi timestamp menjadi string dalam format 12 jam.
-- Hasil yang dikembalikan: 01:50:42 PM. SELECT TO_CHAR(current_timestamp, 'HH12:MI:SS AM'); -- Hasil yang dikembalikan: 12:30:00 AM. SELECT TO_CHAR(time '00:30:00', 'HH12:MI:SS AM');Mengonversi nilai timestamp dari sebuah kolom menjadi string.
CREATE TABLE time_test( a text, b TIMESTAMPTZ ); INSERT INTO time_test VALUES ('2001-09-28 03:00:00','2004-10-19 10:23:54+08'); -- Hasil yang dikembalikan: 10:23:54. SELECT TO_CHAR(b, 'HH24:MI:SS') FROM time_test; -- Mengonversi nilai bertipe TEXT menjadi tanggal. Hasil yang dikembalikan: 2001-09-28. SELECT TO_CHAR(to_timestamp(a, 'YYYY-MM-DD'),'YYYY-MM-DD')FROM time_test;Mengonversi timestamp menjadi string di zona waktu lain.
CREATE TABLE timestamptz_test( a TIMESTAMPTZ); INSERT INTO timestamptz_test VALUES ('2023-03-21 10:23:54+02');Jika tidak ada zona waktu yang ditentukan, nilai timestamp dari kolom a akan dikonversi menjadi string menggunakan zona waktu UTC+8.
-- Hasil yang dikembalikan: 2023-03-21 16:23:54. SELECT TO_CHAR(a, 'YYYY-MM-DD HH24:MI:SS') FROM timestamptz_test;Mengonversi nilai timestamp dari kolom a menjadi string yang menggunakan zona waktu UTC-5.
-- Hasil yang dikembalikan: 2023-03-21 04:23:54. SELECT TO_CHAR(a at time zone 'US/Eastern', 'YYYY-MM-DD HH24:MI:SS') FROM timestamptz_test;
Mengonversi integer menjadi string.
-- Hasil yang dikembalikan: 125. SELECT TO_CHAR(125, '999');Mengonversi bilangan presisi ganda menjadi string.
-- Hasil yang dikembalikan: 125.8. SELECT TO_CHAR(125.8::real, '999D9');
TO_DATE
Deskripsi: Mengonversi string menjadi tanggal. Secara default, hanya string dalam rentang tahun 1925 hingga 2282 yang dapat dikonversi.
TO_DATE(<text_date> TEXT, <format_mask> TEXT)Catatan penggunaan:
Mulai dari Hologres V1.1.31, Anda dapat menjalankan
set hg_experimental_functions_use_pg_implementation = 'to_date';atauset hg_experimental_functions_use_pg_implementation = 'to_char,to_date,to_timestamp';sebelum pernyataan SQL untuk mendukung semua rentang waktu.CatatanJika Anda menjalankan salah satu pernyataan tersebut untuk mengonfigurasi parameter GUC, kinerja query akan menurun sekitar 50%. Pada Hologres V1.1.42 dan versi lebih baru, kinerja query menurun sekitar 20%.
Parameter:
text_date: wajib. String yang ingin Anda konversi.
format_mask: wajib. Format tanggal.
Nilai kembali:
Nilai bertipe TEXT dikembalikan.
Contoh:
Mengonversi string menjadi tanggal.
-- Hasil yang dikembalikan: 2000-12-05. SELECT TO_DATE('05 Dec 2000', 'DD Mon YYYY'); -- Hasil yang dikembalikan: 2001-03-24. SELECT TO_DATE('2001 03 24', 'YYYY-MM-DD');Mengonversi nilai kolom bertipe TEXT menjadi tanggal.
CREATE TABLE time_test(a TEXT); INSERT INTO time_test VALUES ('2001-09-28 03:00:00'); SELECT TO_DATE(a, 'YYYY-MM-DD') FROM time_test;Hasil berikut dikembalikan:
to_date ------------ 2001-09-28
TO_TIMESTAMP
Deskripsi:
Mengonversi string menjadi timestamp. Secara default, hanya string dalam rentang tahun 1925 hingga 2282 yang dapat dikonversi.
TO_TIMESTAMP(<text_date> TEXT, <format_mask> TEXT)Catatan penggunaan:
Nilai kembali mencakup +08.
Mulai dari Hologres V1.1.31, Anda dapat menjalankan
set hg_experimental_functions_use_pg_implementation = 'to_timestamp';atauset hg_experimental_functions_use_pg_implementation = 'to_char,to_date,to_timestamp';sebelum pernyataan SQL untuk mendukung semua rentang waktu.CatatanJika Anda menjalankan salah satu pernyataan tersebut untuk mengonfigurasi parameter GUC, kinerja query akan menurun sekitar 50%. Pada Hologres V1.1.42 dan versi lebih baru, kinerja query menurun sekitar 20%.
Parameter:
text_date: wajib. String yang ingin Anda konversi menjadi timestamp.
format_mask: wajib. Format timestamp.
Mengonversi timestamp menjadi tanggal.
TO_TIMESTAMP(DOUBLE PRECISION)CatatanTimestamp UNIX mewakili jumlah detik yang telah berlalu sejak 00:00:00, 1 Januari 1970.
Nilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
Mengonversi string menjadi timestamp.
SELECT TO_TIMESTAMP('05 Dec 2000', 'DD Mon YYYY');Hasil berikut dikembalikan:
to_timestamp ------------------------ 2000-12-05 00:00:00+08Mengonversi string bertipe TEXT menjadi timestamp.
CREATE TABLE time_test(a TEXT); INSERT INTO time_test VALUES ('2001-09-28 03:00:00'); SELECT TO_TIMESTAMP(a, 'YYYY-MM-DD') FROM time_test;Hasil berikut dikembalikan:
to_timestamp ------------------------ 2001-09-28 00:00:00+08Mengonversi timestamp UNIX dalam detik menjadi tanggal.
-- Hasil yang dikembalikan: 1975-03-06 03:38:16+08. SELECT TO_TIMESTAMP(163280296);Mengonversi timestamp UNIX dalam milidetik menjadi tanggal.
-- Hasil yang dikembalikan: 2021-09-28 12:22:41+08. SELECT TO_TIMESTAMP(1632802961000/1000);
MAKE_DATE
Deskripsi: Membuat tanggal dari tahun, bulan, dan hari. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung.
MAKE_DATE(<year> INT, <month> INT, <day> INT)Catatan penggunaan:
Hologres V2.0.29 dan versi lebih baru mendukung fungsi ini. Fungsi ini tidak mendukung konstanta sebagai parameter input.
Nilai kembali:
Nilai bertipe DATE dikembalikan.
Contoh:
-- Hasil yang dikembalikan: 2013-07-15. SELECT MAKE_DATE(2013, 7, 15);Hasil berikut dikembalikan:
make_date ------------ 2013-07-15
Fungsi dan operator untuk operasi dasar pada nilai tanggal dan waktu
DATEADD
Deskripsi: Menambahkan atau mengurangi interval ke atau dari nilai tanggal dan waktu tertentu berdasarkan unit waktu yang ditentukan. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung.
DATEADD(<d> DATE|TIMESTAMP|TIMESTAMPTZ, <num> BIGINT, <str> TEXT)Catatan penggunaan:
Instansi Hologres dengan versi berikut mendukung fungsi ini:
V2.0.31 hingga V2.1.0
V2.1.13 dan versi lebih baru
CatatanFungsi ini tidak mendukung semua parameter input sebagai konstanta.
Parameter:
d: wajib. Nilai tanggal dan waktu asli.
num: wajib. Interval yang ingin Anda tambahkan atau kurangi.
str: wajib. Unit waktu yang ditentukan. Nilai valid: yyyy, year, mm, month, mon, dd, day, hh, hour, mi, dan ss.
Nilai kembali:
Nilai bertipe DATE, TIMESTAMP, atau TIMESTAMPTZ dikembalikan.
Contoh:
CREATE TABLE test_dateadd (a TIMESTAMP); INSERT INTO test_dateadd VALUES ('2005-02-28 00:00:00'); -- Menambahkan satu bulan ke nilai tanggal dan waktu yang ditentukan. SELECT DATEADD(a , 1, 'mm') FROM test_dateadd;Hasil berikut dikembalikan:
dateadd --------------------- 2005-03-28 00:00:00
ADD_MONTHS
Deskripsi: Menambahkan sejumlah bulan tertentu ke nilai tanggal dan waktu tertentu. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung.
ADD_MONTHS(<d> DATE, <month> INT)Parameter:
d: wajib. Tanggal asli.
month: wajib. Bilangan bulat yang ingin Anda tambahkan ke tanggal asli.
Nilai kembali:
Nilai bertipe DATE dikembalikan.
Contoh:
SELECT ADD_MONTHS(current_date, 2);Hasil berikut dikembalikan:
add_months ------------ 2024-10-05
DATEDIFF
Deskripsi: Menghitung perbedaan antara dua tanggal atau timestamp. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung.
DATEDIFF(<d1> DATE|TIMESTAMP|TIMESTAMPTZ, <d2> DATE|TIMESTAMP|TIMESTAMPTZ, <str> TEXT)Catatan penggunaan:
Instansi Hologres dengan versi berikut mendukung fungsi ini:
V2.0.31 hingga V2.1.0
V2.1.13 dan versi lebih baru
CatatanParameter input fungsi ini tidak dapat semuanya berupa konstanta.
Parameter:
d1: wajib. Tanggal atau timestamp pertama.
d2: wajib. Tanggal atau timestamp kedua.
str: wajib. Unit waktu berdasarkan mana selisih waktu dihitung. Nilai valid: yyyy, year, mm, month, mon, dd, day, hh, hour, mi, dan ss.
Nilai kembali:
Nilai bertipe BIGINT dikembalikan. Jika selisih waktu dalam unit waktu yang ditentukan kurang dari 1, nilai 0 akan dikembalikan secara default.
Sebagai contoh, jika Anda menggunakan fungsi ini untuk menghitung selisih antara 2023-12-31 dan 2024-01-01 berdasarkan unit waktu tahun, nilai 0 akan dikembalikan.
CatatanJika Anda ingin fungsi tersebut mengembalikan 1 dalam skenario sebelumnya, jalankan
set hg_experimental_datediff_use_presto_impl = off;sebelum pernyataan SQL untuk menonaktifkan parameter GUC ini.Contoh:
CREATE TABLE test_datediff (a TIMESTAMP); INSERT INTO test_datediff VALUES ('2005-02-28 00:00:00'); -- Menghitung selisih dalam menit antara dua tanggal. SELECT DATEDIFF(a , '2005-03-02 00:00:00', 'mi') FROM test_datediff;Hasil berikut dikembalikan:
datediff ---------- -2880
MONTHS_BETWEEN
Deskripsi: Mengembalikan jumlah bulan antara dua tanggal. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung.
MONTHS_BETWEEN(DATE, DATE)Nilai kembali:
Nilai bertipe INT dikembalikan.
Contoh:
Contoh 1:
-- Hasil yang dikembalikan: 2. SELECT MONTHS_BETWEEN('2022-01-01', '2021-11-01');Contoh 2:
-- Hasil yang dikembalikan: -2. SELECT MONTHS_BETWEEN('2021-11-01', '2022-01-01');
NEXT_DAY
Deskripsi: Mengembalikan tanggal hari pertama yang ditentukan setelah tanggal tertentu. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung.
NEXT_DAY(<d> DATE, <str> TEXT|INT)Parameter:
d: wajib. Tanggal yang ditentukan.
str: wajib. String yang mewakili hari dalam seminggu. Contoh: Friday. Parameter ini juga dapat diatur ke angka yang mewakili hari dalam seminggu. Angka berkisar dari 1 hingga 7. Nilai 1 menunjukkan Minggu, dan nilai 2 menunjukkan Senin. Dengan cara serupa, nilai 7 menunjukkan Sabtu.
Nilai kembali:
Nilai bertipe DATE dikembalikan.
Contoh:
Contoh 1:
-- Hasil yang dikembalikan: 2022-05-06. SELECT NEXT_DAY('2022-05-01', 'FRIDAY');Contoh 2:
-- Hasil yang dikembalikan: 2022-05-06. SELECT NEXT_DAY('2022-05-01', 5);
Penambahan tanggal dan waktu: +
Tipe nilai kembali | Contoh | Hasil yang dikembalikan |
DATE | Menambahkan tujuh hari ke tanggal tertentu. | 2001-10-05 |
Menambahkan tiga hari ke tanggal saat ini. | 2022-12-10 | |
Menambahkan satu hari ke waktu saat ini. | 2022-12-09 | |
TIMESTAMP | Menambahkan tiga jam ke tanggal tertentu. Waktu dimulai dari 00:00:00. | 2001-09-28 03:00:00 |
Menambahkan satu jam ke tanggal tertentu. Waktu dimulai dari 00:00:00. | 2001-09-28 01:00:00 | |
TIMESTAMPTZ | Menambahkan satu hari ke waktu saat ini. | 2022-12-08 20:09:19.388465+08 |
Menambahkan satu bulan ke waktu saat ini. | 2023-01-08 20:21:50.993481+08 | |
Menambahkan dua tahun ke waktu saat ini. | 2024-12-08 20:22:49.416343+08 |
Pengurangan tanggal dan waktu: -
Tipe nilai kembali | Contoh | Hasil yang dikembalikan |
INTEGER | Mengurangkan tanggal tertentu dari tanggal lain yang ditentukan. | 3 |
DATE | Mengurangkan tujuh hari dari tanggal tertentu. | 2001-09-24 |
TIMESTAMP | Mengurangkan tiga jam dari tanggal tertentu. | 2001-09-27 21:00:00 |
Mengurangkan satu jam dari tanggal tertentu. | 2001-09-27 23:00:00 | |
Mengurangkan dua hari dari waktu saat ini. | 2022-12-06 20:27:21.094258+08 |
Perkalian tanggal dan waktu: *
Tipe nilai kembali | Contoh | Hasil yang dikembalikan |
INTERVAL | Pengali waktu | 0 tahun 0 mons 63 hari 0 jam 0 mins 0.0 detik |
Pembagian tanggal dan waktu: /
Tipe nilai kembali | Contoh | Hasil yang dikembalikan |
INTERVAL | Pembagian waktu | 0 tahun 0 mons 0 hari 0 jam 40 mins 0.0 detik |
Fungsi pemotongan tanggal dan waktu
LAST_DAY
Deskripsi: Mengembalikan hari terakhir dari bulan di mana nilai tanggal jatuh. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung.
LAST_DAY(DATE|TIMESTAMP|TIMESTAMPTZ)Catatan penggunaan:
Instansi Hologres dengan versi berikut mendukung fungsi ini:
CatatanFungsi ini tidak mendukung konstanta sebagai parameter input.
V2.0.31 hingga V2.1.0
V2.1.13 dan versi lebih baru
Nilai kembali:
Nilai bertipe DATE dikembalikan.
Contoh:
Ambil hari terakhir dari bulan untuk
2004-02-28 00:00:00.CREATE TABLE test_last_day (a TIMESTAMP); INSERT INTO test_last_day VALUES ('2004-02-28 00:00:00'); SELECT LAST_DAY(a) FROM test_last_day;Hasil berikut dikembalikan:
last_day ------------ 2004-02-29
ORACLE_LAST_DAY
Deskripsi: Mengembalikan hari terakhir dari bulan di mana nilai tanggal jatuh. Secara default, hanya nilai dalam rentang tahun 1925 hingga 2282 yang didukung. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung.
ORACLE_LAST_DAY(DATE)Nilai kembali:
Nilai bertipe DATE dikembalikan.
Contoh:
SELECT ORACLE_LAST_DAY('2022-05-01');Hasil berikut dikembalikan:
oracle_last_day ----------------- 2022-05-31
EXTRACT
Deskripsi: Mengekstrak bagian tertentu, seperti tahun, bulan, hari, atau jam, dari ekspresi tanggal dan waktu (timestamp).
EXTRACT(field FROM TIMESTAMP)CatatanKonstanta input untuk parameter bidang meliputi century, day, decade, dow (hari dalam seminggu, dengan Minggu sebagai 0), isodow (hari dalam seminggu, dengan Minggu sebagai 7), doy (hari dalam setahun), epoch, hour, minute, month, quarter, second, week, dan year.
Nilai kembali
Nilai bertipe DOUBLE PRECISION dikembalikan.
Contoh
Mengekstrak bagian jam dari timestamp.
-- Hasil yang dikembalikan: 20. SELECT EXTRACT(hour FROM timestamp '2001-02-16 20:38:40');Mengekstrak bagian menit dari waktu saat ini.
-- Hasil yang dikembalikan: 12. SELECT EXTRACT(minute FROM NOW());Mengekstrak jumlah detik dari 1970 hingga waktu yang ditentukan oleh nilai sebuah kolom.
CREATE TABLE time_test(a TEXT); INSERT INTO time_test VALUES ('2001-09-28 03:00:00'); SELECT EXTRACT(epoch FROM to_timestamp(a, 'YYYY-MM-DD')) FROM time_test;Hasil berikut dikembalikan:
date_part ------------ 1001606400
Kompatibilitas: Mulai dari Hologres V4.0, fungsi pemotongan tanggal dan waktu berikut didukung untuk memberikan kompatibilitas yang lebih baik dengan ClickHouse dan Doris. Fungsi-fungsi ini tidak mendukung konstanta sebagai parameter input.
Nama Fungsi
Tipe Kembali
Deskripsi
extract_century(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(century from timestamp), tetapi dengan performa yang lebih baik.
extract_day(timestamp)
toDayOfMonth(timestamp)
day(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(day from timestamp), tetapi dengan performa yang lebih baik.
extract_decade(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(decade from timestamp), tetapi dengan performa yang lebih baik.
extract_dow(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(dow from timestamp), tetapi dengan performa yang lebih baik.
extract_doy(timestamp)
toDayOfYear(timestamp)
dayofyear(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(doy from timestamp), tetapi dengan performa yang lebih baik.
extract_hour(timestamp)
toHour(timestamp)
hour(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(hour from timestamp), tetapi dengan performa yang lebih baik.
extract_isodow(timestamp)
dayofweek_iso(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(isodow from timestamp), tetapi dengan performa yang lebih baik.
extract_minute(timestamp)
toMinute(timestamp)
minute(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(minute from timestamp), tetapi dengan performa yang lebih baik.
extract_month(timestamp)
toMonth(timestamp)
month(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(month from timestamp), tetapi dengan performa yang lebih baik.
extract_quarter(timestamp)
toQuarter(timestamp)
quarter(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(quarter from timestamp), tetapi dengan performa yang lebih baik.
extract_second(timestamp)
toSecond(timestamp)
second(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(second from timestamp), tetapi dengan performa yang lebih baik.
extract_isoweek(timestamp)
toIsoWeek(timestamp)
week_iso(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(week from timestamp), tetapi dengan performa yang lebih baik.
extract_year(timestamp)
toYear(timestamp)
year(timestamp)
DOUBLE PRECISION
Semantik sama dengan extract(year from timestamp), tetapi dengan performa yang lebih baik.
DATE_PART
Deskripsi: Mengekstrak bagian tertentu, seperti bagian tahun, bulan, hari, atau jam, dari timestamp. Fungsi ini setara dengan fungsi EXTRACT.
DATE_PART(<str> TEXT, <d> TIMESTAMP)Parameter:
str: wajib. Bagian yang ingin Anda ekstrak. Nilai valid: century, day, decade, dow (hari dalam seminggu, dengan Minggu sebagai 0), isodow (hari dalam seminggu, dengan Minggu sebagai 7), doy (hari dalam setahun), epoch (jumlah hari sejak Unix epoch), hour, minute, month, quarter, second, week, dan year.
d: wajib. Ekspresi tanggal dan waktu.
Nilai kembali:
Nilai bertipe DOUBLE PRECISION dikembalikan.
Contoh:
Contoh 1: Mengekstrak bagian jam dari timestamp.
SELECT DATE_PART('hour', timestamp '2001-02-16 16:38:40');Hasil berikut dikembalikan:
date_part ----------- 16Contoh 2: Mengekstrak jumlah minggu dari 1 Januari hingga tanggal tertentu.
SELECT DATE_PART('week', TO_DATE('2022-10-11', 'YYYY-MM-DD'));Hasil berikut dikembalikan:
date_part ----------- 41Contoh 3: Mengekstrak jumlah bulan dari 1 Januari hingga tanggal tertentu.
SELECT DATE_PART('month', TO_DATE('2022-10-11', 'YYYY-MM-DD'));Hasil berikut dikembalikan:
date_part ----------- 10
DATE_TRUNC
Deskripsi: Memotong data tanggal dan waktu ke unit waktu yang ditentukan.
DATE_TRUNC(<str> TEXT, <d> TIME|TIMESTAMP|TIMESTAMPTZ)Parameter:
str: wajib. Unit waktu. Nilai valid: century, decade, year, quarter, month, week, day, hour, minute, dan second.
d: wajib. Data tanggal dan waktu yang ingin Anda potong.
Nilai kembali:
Nilai bertipe TIMESTAMP atau TIMESTAMPTZ dikembalikan.
Contoh:
Contoh 1: Memotong timestamp tertentu ke bagian jam.
SELECT DATE_TRUNC('hour', time '12:38:40');Hasil berikut dikembalikan:
date_trunc ------------ 12:00:00Contoh 2: Memotong timestamp tertentu ke bagian hari.
SELECT DATE_TRUNC('day', timestamptz'2001-02-16 20:38:40+08');Hasil berikut dikembalikan:
date_trunc ------------------------ 2001-02-16 00:00:00+08Contoh 3: Memotong timestamp tertentu ke bagian bulan.
SELECT DATE_TRUNC('month', timestamp '2001-02-16 18:38:40');Hasil berikut dikembalikan:
date_trunc --------------------- 2001-02-01 00:00:00Contoh 4: Memotong timestamp saat ini ke bagian bulan dan menambahkan 12 jam untuk mengembalikan 12:00:00 pada hari pertama bulan saat ini.
SELECT DATE_TRUNC('month',now()) +interval '12h';Hasil berikut dikembalikan:
?column? --------------------- 2024-08-01 12:00:00+08Contoh 5: Memotong timestamp saat ini ke bagian hari dan menambahkan 9 jam untuk mengembalikan 09:00:00 pada hari saat ini.
SELECT DATE_TRUNC('day',now()) + interval '9h';Hasil berikut dikembalikan:
?column? ------------------------ 2024-08-08 09:00:00+08Contoh 6: Mengekstrak hari yang sama dalam seminggu.
SELECT DATE_TRUNC('day',now()) + interval '7d';Hasil berikut dikembalikan:
?column? ------------------------ 2024-08-15 00:00:00+08
TRUNC
Deskripsi: Memotong tanggal atau timestamp ke unit waktu yang ditentukan. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung.
TRUNC(<d> DATE|TIMESTAMP [, <str> TEXT])Parameter:
d: wajib. Nilai tanggal dan waktu yang ingin Anda potong. Jika Anda menentukan nilai bertipe TIMESTAMPTZ, sisa bagiannya disetel ke 0.
str: opsional. Unit waktu. Jika Anda tidak mengonfigurasi parameter ini, tanggal asli akan dikembalikan. Anda dapat menyetel parameter ini ke Y atau Q. Nilai Y menunjukkan hari pertama tahun tersebut, dan nilai Q menunjukkan hari pertama kuartal tersebut. Untuk informasi lebih lanjut, lihat Dokumentasi Oracle.
Nilai kembali:
Nilai bertipe DATE atau TIMESTAMPTZ dikembalikan.
Contoh:
Contoh 1:
SELECT TRUNC('2022-05-22'::date,'Y');Hasil berikut dikembalikan:
trunc ------------ 2022-01-01Contoh 2:
SELECT TRUNC('2022-05-22 13:11:22'::timestamp,'Y');Hasil berikut dikembalikan:
trunc --------------------- 2022-01-01 00:00:00Contoh 3:
SELECT TRUNC('2022-05-22 13:11:22'::timestamp,'Q');Hasil berikut dikembalikan:
trunc --------------------- 2022-04-01 00:00:00Contoh 4:
SELECT TRUNC('2022-05-22 13:11:22'::timestamp);Hasil berikut dikembalikan:
trunc --------------------- 2022-05-22 00:00:00
ROUND
Deskripsi: Membulatkan tanggal ke nilai terdekat berdasarkan unit waktu. Fungsi ini kompatibel dengan Oracle. Sebelum menggunakan fungsi ini, Anda harus menginstal ekstensi Orafce. Untuk informasi lebih lanjut, lihat Fungsi Oracle yang didukung.
ROUND(<d> DATE|TIMESTAMPTZ [, <str> TEXT])Parameter:
d: wajib. Tanggal yang ingin Anda bulatkan. Jika Anda menentukan nilai bertipe TIMESTAMPTZ, sisa bagiannya disetel ke 0.
str: opsional. Unit waktu. Jika Anda tidak mengonfigurasi parameter ini, fungsi ini membulatkan tanggal ke hari terdekat. Anda dapat menyetel parameter ini ke Y, yang menunjukkan hari pertama tahun terdekat. Untuk informasi lebih lanjut, lihat Dokumentasi Oracle.
Nilai kembali:
Nilai bertipe DATE atau TIMESTAMPTZ dikembalikan.
Contoh:
Contoh 1:
SELECT ROUND('2022-05-22'::date,'Y');Hasil berikut dikembalikan:
round ------------ 2022-01-01Contoh 2:
SELECT ROUND('2022-07-22'::date,'Y');Hasil berikut dikembalikan:
round ------------ 2023-01-01Contoh 3:
SELECT ROUND('2022-07-22 13:11:22'::timestamp,'Y');Hasil berikut dikembalikan:
round --------------------- 2023-01-01 00:00:00Contoh 4:
SELECT ROUND('2022-02-22 13:11:22'::timestamp);Hasil berikut dikembalikan:
round --------------------- 2022-02-23 00:00:00
Fungsi pengambilan tanggal dan waktu saat ini
CURRENT_DATE
Deskripsi: Mengembalikan tanggal saat ini.
CURRENT_DATENilai kembali:
Nilai bertipe DATE dikembalikan.
Contoh:
SELECT CURRENT_DATE;Hasil berikut dikembalikan:
current_date -------------- 2024-08-08
CURRENT_TIMESTAMP
Deskripsi: Mengembalikan waktu mulai transaksi saat ini. Fungsi ini setara dengan fungsi TRANSACTION_TIMESTAMP atau NOW.
CURRENT_TIMESTAMPCatatanNilai kembali tetap tidak berubah selama siklus hidup transaksi.
Nilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
SELECT CURRENT_TIMESTAMP;Hasil berikut dikembalikan:
current_timestamp ------------------------------- 2024-08-08 14:55:11.006068+08
CLOCK_TIMESTAMP
Deskripsi: Mengembalikan tanggal dan waktu saat ini.
clock_timestamp()CatatanPerubahan juga dapat dilakukan dalam satu perintah.
Nilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
SELECT clock_timestamp();Hasil berikut dikembalikan:
clock_timestamp ------------------------------- 2024-08-08 14:57:43.569109+08
LOCALTIMESTAMP
Deskripsi: Mengembalikan waktu saat ini tanpa informasi zona waktu.
LOCALTIMESTAMPNilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
SELECT LOCALTIMESTAMP;Hasil berikut dikembalikan:
localtimestamp --------------------------- 2024-08-08 15:00:59.13245
NOW
Deskripsi: Mengembalikan waktu mulai transaksi saat ini. Fungsi ini setara dengan fungsi TRANSACTION_TIMESTAMP atau CURRENT_TIMESTAMP.
NOW()CatatanNilai kembali tetap tidak berubah selama siklus hidup transaksi.
Nilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
SELECT NOW();Hasil berikut dikembalikan:
now ------------------------------- 2024-08-08 15:02:50.270501+08
STATEMENT_TIMESTAMP
Deskripsi: Mengembalikan waktu mulai pernyataan saat ini.
STATEMENT_TIMESTAMP()CatatanNilai kembali bervariasi berdasarkan pernyataan dalam transaksi tempat fungsi digunakan.
Nilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
SELECT STATEMENT_TIMESTAMP();Hasil berikut dikembalikan:
statement_timestamp ------------------------------- 2024-08-08 15:06:14.772939+08
TIMEOFDAY
Deskripsi: Mengembalikan tanggal dan waktu saat ini. Fungsi ini mirip dengan fungsi CLOCK_TIMESTAMP. Nilai yang dikembalikan oleh fungsi TIMEOFDAY adalah string teks yang diformat.
TIMEOFDAY()Nilai kembali:
Nilai bertipe TEXT dikembalikan.
Contoh:
SELECT TIMEOFDAY();Hasil berikut dikembalikan:
timeofday ------------------------------------- Thu Aug 08 15:08:16.599369 2024 CST
TRANSACTION_TIMESTAMP
Deskripsi: Mengembalikan waktu mulai transaksi saat ini. Fungsi ini setara dengan fungsi CURRENT_TIMESTAMP atau NOW.
TRANSACTION_TIMESTAMP()CatatanNilai kembali tetap tidak berubah selama siklus hidup transaksi.
Nilai kembali:
Nilai bertipe TIMESTAMPTZ dikembalikan.
Contoh:
SELECT TRANSACTION_TIMESTAMP();Hasil berikut dikembalikan:
transaction_timestamp ------------------------------- 2024-08-08 15:11:10.329005+08
Fungsi lainnya
ISFINITE
Deskripsi:
Memeriksa apakah tanggal bertipe DATE merupakan angka terbatas.
ISFINITE(DATE)Memeriksa apakah timestamp merupakan angka terbatas.
ISFINITE(TIMESTAMP)
Nilai kembali:
Nilai bertipe BOOLEAN dikembalikan. Nilai true (t) dikembalikan jika tanggal atau timestamp merupakan angka terbatas, dan nilai false (f) dikembalikan jika tanggal atau timestamp bukan angka terbatas.
Contoh:
Contoh 1:
SELECT ISFINITE(date '2001-02-16');Hasil berikut dikembalikan:
isfinite ---------- tContoh 2:
SELECT ISFINITE(timestamp '2001-02-16 21:28:30');Hasil berikut dikembalikan:
isfinite ---------- t
Contoh SQL umum
Contoh 1: Menambahkan beberapa jam ke waktu saat ini.
SELECT NOW()+interval '2 hour';Hasil berikut dikembalikan:
?column? --------------------- 2022-12-29 13:43:58.321104+08Contoh 2: Mengonversi tanggal menjadi timestamp.
SELECT EXTRACT(epoch FROM current_timestamp);Hasil berikut dikembalikan:
date_part --------------------- 1672285506.296279Contoh 3: Menambahkan nilai bertipe DATE dan nilai bertipe INT.
CREATE TABLE date_test1( a DATE, b INT ); INSERT INTO date_test1 VALUES ('2021-09-28','12'); SELECT a + (b || ' month')::interval FROM date_test1;Hasil berikut dikembalikan:
?column? -------------------- 2022-09-28 00:00:00Contoh 4: Mengonversi string menjadi timestamp.
SELECT TO_TIMESTAMP(TO_CHAR(20211027172045,'9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS');Hasil berikut dikembalikan:
to_timestamp ---------------------- 2021-10-27 17:20:45+08Contoh 5: Memotong waktu
SELECT EXTRACT(mon FROM now());Hasil berikut dikembalikan:
date_part --------- 12Contoh 6: Membagi integer dengan integer lain.
Saat Anda membagi dua bilangan bulat, Hologres melakukan pembagian bilangan bulat dan membuang sisanya. Sebagai contoh, hasil dari
10/3adalah 3. Untuk mendapatkan hasil dengan bagian desimal, ubah tipe data secara eksplisit menjadi float sebelum perhitungan, seperti yang ditunjukkan dalam contoh berikut:SELECT 10/3::float;Hasil berikut dikembalikan:
?column? --------- 3.3333333333333335