在 PostgreSQL 中,有多种用于处理时间和日期的数据类型和函数。以下是一些关于 PostgreSQL 时间和日期的基本概念和用法:

1. 时间和日期数据类型:

  •  DATE: 表示日期。

  CREATE TABLE my_table (
      my_date DATE
  );

  •  TIME: 表示时间。

  CREATE TABLE my_table (
      my_time TIME
  );

  •  TIMESTAMP: 表示日期和时间。

  CREATE TABLE my_table (
      my_timestamp TIMESTAMP
  );

  •  INTERVAL: 表示时间间隔。

  CREATE TABLE my_table (
      my_interval INTERVAL
  );

2. 当前时间和日期:

  •  CURRENT_DATE: 获取当前日期。

  SELECT CURRENT_DATE;

  •  CURRENT_TIME: 获取当前时间。

  SELECT CURRENT_TIME;

  •  CURRENT_TIMESTAMP: 获取当前日期和时间。

  SELECT CURRENT_TIMESTAMP;

3. 日期和时间函数:

  •  EXTRACT: 从日期或时间中提取特定部分。

  SELECT EXTRACT(YEAR FROM my_timestamp) AS year FROM my_table;

  •  AGE: 计算两个日期之间的间隔。

  SELECT AGE('2022-01-01'::DATE, '2021-01-01'::DATE) AS age;

  •  TO_CHAR: 将日期或时间格式化为字符串。

  SELECT TO_CHAR(my_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM my_table;

4. 日期和时间运算:

  •  加法和减法: 可以对日期和时间进行加法和减法运算。

  SELECT my_timestamp + INTERVAL '1 day' AS tomorrow FROM my_table;
  SELECT my_timestamp - INTERVAL '1 week' AS last_week FROM my_table;

5. 时区:

  •  AT TIME ZONE: 调整日期和时间的时区。

  SELECT my_timestamp AT TIME ZONE 'UTC' AS timestamp_utc FROM my_table;

6. 示例:
-- 创建包含日期和时间的表
CREATE TABLE my_table (
    my_date DATE,
    my_time TIME,
    my_timestamp TIMESTAMP,
    my_interval INTERVAL
);

-- 插入数据
INSERT INTO my_table VALUES
('2022-01-01'::DATE, '12:30:00'::TIME, '2022-01-01 12:30:00'::TIMESTAMP, '1 day'::INTERVAL);

-- 查询当前日期和时间
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;

-- 查询日期和时间的特定部分
SELECT EXTRACT(YEAR FROM my_timestamp) AS year, EXTRACT(MONTH FROM my_timestamp) AS month FROM my_table;

-- 计算两个日期之间的间隔
SELECT AGE('2022-01-01'::DATE, '2021-01-01'::DATE) AS age;

-- 格式化日期和时间为字符串
SELECT TO_CHAR(my_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM my_table;

-- 日期和时间运算
SELECT my_timestamp + INTERVAL '1 day' AS tomorrow FROM my_table;

-- 时区调整
SELECT my_timestamp AT TIME ZONE 'UTC' AS timestamp_utc FROM my_table;

这些是 PostgreSQL 中处理时间和日期的一些基本概念和用法。PostgreSQL 提供了丰富的日期和时间函数,使得处理和操作时间数据变得非常灵活。


转载请注明出处:http://www.zyzy.cn/article/detail/14155/PostgreSQL