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

Làm thế nào để xác định độ phân giải lớn nhất của một INTERVAL?

Câu hỏi không rõ ràng 100% vì vậy câu trả lời có thể có hoặc không chính xác những gì bạn đang tìm kiếm, nhưng ...

Có một justify_interval() mà bạn có thể muốn xem xét.

test=# select justify_interval(INTERVAL '100 days 3 seconds');
    justify_interval     
-------------------------
 3 mons 10 days 00:00:03
(1 row)

test=# select justify_interval(TIME '20:05' - TIME '12:01:01');
 justify_interval 
------------------
 08:03:59
(1 row)

test=# select justify_interval(AGE(NOW(), NOW() - INTERVAL '1 MONTH'));
 justify_interval 
------------------
 1 mon
(1 row)

Ở đó, hãy trích xuất năm, rồi tháng, rồi ngày, v.v. cho đến khi bạn đưa ra câu trả lời khác 0:

test=# select extract('mon' from interval '3 mons 10 days 00:00:03');
 date_part 
-----------
         3

Trả lời câu hỏi khác của bạn trong phần bình luận:

create function max_res(interval) returns interval as $$
select case
       when extract('year' from justify_interval($1)) > 0 or
            extract('mon' from justify_interval($1)) > 0 or
            extract('day' from justify_interval($1)) > 0
       then '1 day'
       when extract('hour' from justify_interval($1)) > 0
       then '1 hour'
       when ...
       end;
$$ language sql immutable strict;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. So sánh Kho dữ liệu cho PostgreSQL - MVCC so với InnoDB

  2. Rails 3, will_paginate, ngẫu nhiên, các bản ghi lặp lại, Postgres, setseed thất bại

  3. Tại sao chuỗi id SQL không đồng bộ (cụ thể là sử dụng Postgres)?

  4. Sequelize.js vẫn xóa hàng trong bảng ngay cả khi paranoid được đặt thành true

  5. kết nối với máy chủ postgres trên google compute engine