Ingin tahu apakah seseorang dapat membantu dengan beberapa Postgres. Saya memiliki tabel yang memiliki kolom yang disebut mydate
tipe tanggal postgres. Saya ingin melakukan sesuatu seperti:
SELECT * FROM MyTable WHERE mydate > [Today-1year]
Saya belum pernah menggunakan Postgres sebelumnya dan saya yakin saya hanya perlu mengetahui nama beberapa fungsi- Saya akan dengan senang hati mencari referensinya sendiri. Adakah yang bisa mengarahkan saya ke arah yang benar?
Terima kasih!
sql
postgresql
Joseph
sumber
sumber
Jawaban:
Jika Anda hanya peduli tentang tanggal dan bukan waktunya, pengganti
current_date
untuknow()
sumber
now()
adalah stempel waktu, jadi rentang ini juga hanya akan menyertakan sebagian hari dari setahun yang lalu dan sebagian dari hari ini. Jika Anda ingin memfilter pada hari-hari penuh,now()::date
gunakan sesuai saran Alex Howansky.current_date
sebagai penggantinow()
Saya pikir ini akan berhasil:
sumber
interval '1 year'
, ini tidak akan menghormati tahun kabisat. Itu mungkin bukan urusan Anda, tetapi jika ya, gunakan jawaban saya.now()
mengembalikan stempel waktu, jadi setelah mengurangi'1 day'
, Anda akan mendapatkan stempel waktu yang kemungkinan akan memfilter bagian dari hari yang ingin Anda buat kueri. Kebanyakan orang ingin memfilter dalam satu hari penuh, dan menggunakannow()::date
atauCURRENT_DATE
perlu.Ini akan memberi Anda tanggal saat ini dikurangi 1 tahun:
sumber
Anda juga dapat memeriksa menggunakan
age()
fungsi tersebutselect * from mytable where age( mydate, now() ) > '1 year';
age()
akan mengembalikan sebuah interval.Misalnya
age( '2015-09-22', now() )
akan kembali-1 years -7 days -10:56:18.274131
Lihat dokumentasi postgresql
sumber
age()
adalah fungsi hanya-PostgreSQL (2018-10-05)