Di PostgreSQL, make_interval()
fungsi membuat interval dari bidang tahun, bulan, minggu, hari, jam, menit, dan detik.
Anda memberikan bidang tahun, bulan, minggu, hari, jam, menit dan/atau detik, dan itu akan mengembalikan interval dalam interval tipe data.
Sintaks
Fungsi tersebut memiliki sintaks berikut:
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)
Contoh
Berikut ini contoh untuk didemonstrasikan.
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Hasil:
1 year 2 mons 25 days 05:06:07
Dalam contoh ini, saya memberikan ketujuh argumen tersebut.
Ini adalah mekanisme tradisional untuk meneruskan argumen ke fungsi di PostgreSQL, dan ini disebut sebagai "notasi posisi".
Saat menggunakan notasi posisi, semua argumen ditentukan secara berurutan.
Notasi Bernama
Berikut ini contoh penggunaan notasi bernama.
SELECT make_interval(days => 12);
Hasil:
12 days
Dalam contoh ini, saya menggunakan notasi bernama untuk menentukan hanya satu argumen. Ini menyelamatkan saya dari keharusan memasukkan semua argumen, hanya untuk menentukan jumlah hari.
Semua argumen default ke nol, jadi tidak ada dampak buruk dengan menghilangkannya.
Inilah yang terjadi jika saya tidak menggunakan notasi bernama saat menentukan hanya satu argumen.
SELECT make_interval(12);
Hasil:
12 years
Diasumsikan yang saya maksud adalah 12 tahun.
Hal yang baik tentang notasi bernama adalah Anda dapat memberikan argumen sebanyak yang Anda butuhkan, dan tidak lebih.
Misalnya:
SELECT make_interval(months => 10, days => 5, mins => 47);
Hasil:
10 mons 5 days 00:47:00
Notasi Bernama Lama
Versi Postgres yang lebih lama menggunakan sintaks yang sedikit berbeda untuk notasi bernama. Sintaks ini menggunakan :=
bukannya =>
.
Contoh:
SELECT make_interval(days := 12);
Hasil:
12 days
Pada Postgres 12, sintaks ini masih berfungsi untuk kompatibilitas mundur.
Minggu dan Hari
Dengan interval Postgres, minggu direpresentasikan sebagai hari. Jadi jika Anda menentukan weeks
argumen, hasilnya akan dalam beberapa hari.
SELECT make_interval(weeks => 2);
Hasil:
14 days
Oleh karena itu jika Anda juga menentukan days
argumen, itu akan ditambahkan ke hari yang dihasilkan oleh weeks
argumen.
SELECT make_interval(weeks => 2, days => 3);
Hasil:
17 days
Gaya Keluaran Interval
Di Postgres, format output dari tipe interval dapat diatur ke salah satu dari empat gaya interval berikut:
sql_standard
postgres
postgres_verbose
iso_8601
Anda dapat mengatur ini menggunakan SET intervalstyle
. Standarnya adalah postgres
formatnya.
Contoh sebelumnya semua menggunakan format default (postgres
).
Berikut adalah contoh yang menunjukkan output dari make_interval()
saat menggunakan gaya keluaran yang berbeda.
sql_standard
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Hasil:
+1-2 +25 +5:06:07
postgres
Ini adalah pengaturan default.
SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Hasil:
1 tahun 2 mons 25 hari 05:06:07
postgres_verbose
SET intervalstyle = 'postgres_verbose';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Hasil:
@ 1 year 2 mons 25 days 5 hours 6 mins 7 secs
iso_8601
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Hasil:
P1Y2M25DT5H6M7S