Katakanlah saya punya interval suka
4 days 10:00:00
dalam postgres. Bagaimana saya mengonversinya menjadi beberapa jam (106 dalam kasus ini?) Apakah ada fungsi atau haruskah saya menggigit peluru dan melakukan sesuatu seperti
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
sumber
sumber
Jawaban:
Mungkin cara termudah adalah:
sumber
Jika Anda ingin bilangan bulat yaitu jumlah hari:
sumber
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(saya menggunakan Pg 9.4), karenaage(ts)
secara otomatis digunakanCURRENT_DATE
ketika hanya satu argumen.Untuk mendapatkan jumlah hari, cara termudah adalah:
Sejauh yang saya tahu itu akan kembali sama dengan:
sumber
'1 month 0 days'
, menggunakanextract(day from …)
akan memberi Anda0
hasilnya.The
::int
konversi mengikuti prinsip pembulatan. Jika Anda menginginkan hasil yang berbeda seperti pembulatan ke bawah, Anda dapat menggunakan fungsi matematika yang sesuai sepertifloor
.sumber
Jika Anda mengonversi bidang tabel:
Tentukan bidangnya sehingga berisi detik:
Ekstrak nilainya. Ingatlah untuk melemparkan ke orang bijak lain Anda bisa mendapatkan kejutan yang tidak menyenangkan begitu intervalnya besar:
EXTRACT(EPOCH FROM field)::int
sumber
Berikut ini adalah kueri sederhana yang menghitung jumlah total hari.
sumber