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

Bagaimana age() Bekerja di PostgreSQL

Di Postgres, age() fungsi mengembalikan usia berdasarkan dua stempel waktu atau variabel tanggal.

Hasilnya dikembalikan menggunakan tahun dan bulan, bukan hanya hari.

Misalnya, hasilnya mungkin terlihat seperti ini:3 tahun 2 mons 30 hari .

Sintaks

Anda dapat menggunakan salah satu dari dua sintaks berikut:

age(timestamp)
age(timestamp, timestamp)

Yang pertama mengembalikan usia berdasarkan tanggal saat ini. Secara khusus, ini mengurangi current_date() (di tengah malam).

Sintaks kedua memungkinkan Anda untuk mendapatkan tanggal berdasarkan dua tanggal eksplisit. Menggunakan sintaks ini menyebabkan tanggal kedua dikurangi dari yang pertama. Dengan kata lain, usia tidak didasarkan pada tanggal hari ini – ini didasarkan pada tanggal yang diberikan dalam argumen pertama.

Contoh 1 – Gunakan Tanggal Hari Ini

Berikut adalah contoh untuk mendemonstrasikan sintaks pertama.

SELECT 	age(timestamp '1987-03-14');

Hasil:

33 years 2 mons 30 days

Dalam hal ini, saya memberikan satu argumen. age() fungsi kemudian dikurangi dari tanggal hari ini (tanggal saya menjalankan kueri) dan kami mendapatkan hasilnya.

Hanya untuk mendemonstrasikan ini lebih lanjut, ini dia lagi, tapi kali ini bersama current_date() untuk menunjukkan tanggal saya menjalankan kueri.

SELECT 	
  current_date,
  age(timestamp '1987-03-14');

Hasil:

 current_date |           age           
--------------+-------------------------
 2020-06-13   | 33 years 2 mons 30 days

Contoh 2 – Gunakan Tanggal Khusus

Dalam contoh ini, saya memberikan dua tanggal untuk membandingkan. Oleh karena itu, usia tidak didasarkan pada tanggal hari ini. Ini didasarkan pada kencan pertama yang diberikan kepada age() fungsi.

SELECT age(timestamp '2001-01-01', timestamp '2000-03-14');

Hasil:

9 mons 18 days

Dalam hal ini, usianya kurang dari satu tahun sehingga tahun tidak disebutkan dalam hasil.

Berikut adalah contoh lain yang menunjukkan apa yang terjadi jika hanya tahun yang berubah (yaitu bagian bulan dan hari dari kedua tanggal tersebut sama persis, tetapi tahunnya berbeda).

SELECT age(timestamp '2007-01-01', timestamp '2000-01-01');

Hasil:

7 years

Jadi sekali lagi, itu hanya menghilangkan bagian-bagian yang tidak relevan (dalam hal ini bulan dan hari).

Contoh 3 – Tanggal Identik

Inilah yang terjadi jika kedua tanggal itu sama.

SELECT age(timestamp '2001-01-01', timestamp '2001-01-01');

Hasil:

00:00:00

Contoh 4 – Usia Negatif

Jika kencan kedua lebih lambat dari kencan pertama, Anda berakhir dengan usia negatif.

SELECT age(timestamp '2001-01-01', timestamp '2002-03-07');

Hasil:

-1 years -2 mons -6 days

Di sini tanda minus ditambahkan ke semua komponen tanggal (yaitu komponen tahun, bulan, dan hari).

Contoh 5 – Usia dalam Tahun

Jika Anda hanya ingin usia dalam tahun, Anda dapat menggunakan extract() atau date_part() untuk mengekstrak tahun dari age() nilai kembalian fungsi.

Berikut adalah contoh yang menggunakan extract() fungsi:

SELECT extract(year from age(timestamp '1997-10-25'));

Hasil:

22.0

Begitulah tampilannya saat saya menjalankannya di Azure Data Studio.

Saat saya menjalankannya di psql , saya mengerti ini:

22

Keduanya extract() dan date_part() mengembalikan hasilnya menggunakan tipe data presisi ganda.

Anda dapat mengonversinya menjadi bilangan bulat (atau tipe data lainnya) jika diperlukan, dengan menambahkannya dengan ::int .

SELECT extract(year from age(timestamp '1997-10-25'))::int;

Hasil:

22

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. instalasi postgres inisialisasi cluster database gagal ( Postgresql Versi 9.4.4 )

  2. Apakah posisi kolom id di Postgresql penting?

  3. Cara Mengaktifkan SSL di PostgreSQL

  4. Daftar fungsi tersimpan yang mereferensikan tabel di PostgreSQL

  5. Beberapa panggilan array_agg() dalam satu kueri