PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana make_interval() Bekerja di PostgreSQL

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BeanCreationException:Kesalahan membuat kacang dengan nama 'flywayInitializer'

  2. PostgreSQL:KUNCI ASING/ON DELETE CASCADE

  3. Django memodelkan satu kunci asing ke banyak tabel

  4. PostgreSQL hapus semua konten

  5. Menyimpan Gambar di PostgreSQL