PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sự khác biệt giữa hai ngày trong postgresql

Hãy thử:

date_part('year',age(coalesce(d1,current_date), d2))::int;

age(d1,d2) hàm trả về số năm, tháng và ngày giữa hai ngày ở định dạng sau:

xxx year(s) xxx mon(s) xxx day(s).

từ đầu ra này bằng cách sử dụng date_part() để chọn sự khác biệt duy nhất trong năm. và cũng không cần đặt câu lệnh if để xử lý NULL như tôi đã thêm coalesece trả về đầu tiên NON Null giá trị, Vì vậy, nếu d1NULL nó trả về cuurent_date

Cấu trúc chức năng:

CREATE OR REPLACE FUNCTION diff(d1 date,d2 date) RETURNS int AS $$
BEGIN

 RETURN date_part('year',age(coalesce(d1,current_date), d2))::int;
END
$$ language plpgsql;

Gọi hàm:

select * from diff(null,'2010-04-01');
select * from diff('2012-10-01','2010-04-01');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. findById () cung cấp Không tìm thấy Id thuộc tính

  2. Có thể thêm các chuỗi của riêng bạn vào một Django SearchVectorField không?

  3. Tạo hàm SQL tham chiếu đến một bảng hoặc cột không tồn tại (chưa)

  4. Một truy vấn PostgreSQL với 'ANY' không hoạt động

  5. Làm cách nào để thêm cột không cho phép null trong cơ sở dữ liệu Postgresql?