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

Bagaimana date_trunc() Bekerja di PostgreSQL

Di PostgreSQL, date_trunc() fungsi memotong nilai tanggal/waktu ke presisi yang ditentukan.

Itu juga dapat memotong nilai ke presisi tertentu dalam zona waktu tertentu.

Anda dapat menganggapnya sebagai versi tanggal dari trunc() fungsi (yang memotong angka).

Sintaks

Sintaksnya seperti ini:

date_trunc(field, source [, time_zone ])

Dimana:

  • field adalah presisi untuk memotong nilai input (misalnya month , hour , dll). Lihat di bawah untuk daftar lengkap nilai yang dapat diterima untuk argumen ini.
  • source adalah ekspresi nilai dari tipe stempel waktu , stempel waktu dengan zona waktu , atau interval . Perhatikan bahwa nilai tipe tanggal dan waktu dilemparkan secara otomatis ke stempel waktu atau interval , masing-masing.
  • time_zone opsional argumen dapat diberikan untuk menentukan zona waktu yang berbeda.

field argumen dapat berupa salah satu dari berikut ini:

  • mikrodetik
  • milidetik
  • kedua
  • menit
  • jam
  • hari
  • minggu
  • bulan
  • seperempat
  • tahun
  • dekade
  • abad
  • milenium

Contoh Dasar

Berikut ini contoh untuk didemonstrasikan.

SELECT date_trunc('hour', timestamp '2020-06-30 17:29:31');

Hasil:

2020-06-30 17:00:00

Kita dapat melihat bahwa bagian waktu dari tanggal telah dipotong dari 17:29:31 ke 17:00:00 . Itu karena saya menggunakan hour untuk argumen pertama.

Ini dia dengan nilai yang berbeda untuk argumen pertama.

\x
SELECT 
  date_trunc('minute', timestamp '2020-06-30 17:29:31'),
  date_trunc('day', timestamp '2020-06-30 17:29:31'),
  date_trunc('month', timestamp '2020-06-30 17:29:31'),
  date_trunc('year', timestamp '2020-06-30 17:29:31');

Hasil (menggunakan keluaran vertikal):

date_trunc | 2020-06-30 17:29:00
date_trunc | 2020-06-30 00:00:00
date_trunc | 2020-06-01 00:00:00
date_trunc | 2020-01-01 00:00:00

Dalam hal ini saya menggunakan \x untuk mengaktifkan tampilan yang diperluas/output vertikal, sehingga lebih mudah untuk membaca hasilnya.

Dengan Zona Waktu

Berikut adalah contoh untuk mendemonstrasikan WITH TIME ZONE pilihan.

SELECT 
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+00'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+01');

Hasil:

date_trunc | 2020-07-01 03:00:00+10
date_trunc | 2020-07-01 02:00:00+10

Zona waktu lokal ketika saya menjalankan contoh-contoh ini adalah Australia/Brisbane.

Anda juga dapat menambahkan nama zona waktu lengkap sebagai argumen ketiga.

SELECT 
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland');

Hasil:

date_trunc | 2020-06-30 15:00:00+10
date_trunc | 2020-06-30 15:00:00+10

Dengan Interval

Berikut adalah contoh yang menggunakan nilai interval alih-alih tanggal.

SELECT date_trunc('hour', interval '7 days 5 hours 15 minutes');

Hasil:

7 days, 5:00:00


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Analisis Log PostgreSQL Dengan pgBadger

  2. Menyebarkan Django + Python 3 + PostgreSQL ke AWS Elastic Beanstalk

  3. PostgreSQL:menjalankan hitungan baris untuk kueri 'menurut menit'

  4. Kapan nama kolom atau tabel Postgres membutuhkan tanda kutip dan kapan tidak?

  5. Perbedaan kinerja:kondisi ditempatkan pada klausa INNER JOIN vs WHERE