📌  相关文章
📜  在 POSTGRESQL 中计算两个日期之间的月份(1)

📅  最后修改于: 2023-12-03 15:23:15.489000             🧑  作者: Mango

计算两个日期之间的月份

在 PostgreSQL 中可以使用内置函数来方便地计算两个日期之间的月份。

使用 extract 函数

extract 函数可以方便地从日期值中提取年、月、日等信息。我们可以使用 extract 函数来计算两个日期之间的月份差距。

SELECT extract(year from age(date2, date1)) * 12 + extract(month from age(date2, date1))
FROM table;

其中,date1 表示起始日期,date2 表示结束日期。age 函数用于计算两个日期之间的时间间隔。

extract(year from age(date2, date1)) 表示两个日期之间的年份差距,乘以 12 即可得到月份差距。extract(month from age(date2, date1)) 则表示两个日期之间的月份差距。将两者相加即可得到总的月份差距。

示例代码

下面是一个示例代码,已按照 markdown 格式进行标注:

-- 创建表格
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  hire_date DATE NOT NULL,
  term_date DATE NOT NULL
);

-- 添加示例数据
INSERT INTO users (name, hire_date, term_date)
VALUES
  ('Alice', '2022-01-01', '2022-04-01'),
  ('Bob', '2021-11-01', '2022-02-01'),
  ('Charlie', '2020-01-01', '2021-12-01'),
  ('Dave', '2019-01-01', '2020-01-01');

-- 计算月份差距
SELECT name, extract(year from age(term_date, hire_date)) * 12 + extract(month from age(term_date, hire_date))
FROM users;

输出结果如下:

┌──────────┬─────────┐
│   name   │ ?column? │
├──────────┼─────────┤
│ Alice    │ 3       │
│ Bob      │ 3       │
│ Charlie  │ 23      │
│ Dave     │ 12      │
└──────────┴─────────┘