PostgreSQL时间戳转换日期格式

1. 介绍

在 PostgreSQL 中,时间戳是一种常见的数据类型,用于存储日期和时间信息。时间戳可以表示从 1970 年 1 月 1 日开始的秒数,也可以表示一个日期时间值。本文将详细介绍如何在 PostgreSQL 中转换时间戳为日期格式。

2. 时间戳与日期的转换

2.1 时间戳转日期

to_timestamp()timestamp with time zone

以下是一个示例代码,演示如何将时间戳转换为日期:

```sql

SELECT to_timestamp(1609459200) as date;

```

运行结果:

```

date --------------------- 2021-01-01 00:00:00 (1 row)

2021-01-01 00:00:00

```

2.2 日期转时间戳

EXTRACT()

以下是一个示例代码,演示如何将日期转换为时间戳:

```sql

SELECT EXTRACT(epoch FROM TIMESTAMP '2021-01-01 00:00:00') as timestamp;

```

运行结果:

```

timestamp ------------------ 1609459200.000000 (1 row)

EXTRACT()1609459200.000000

```

3. 日期格式与时间戳的相互转换

3.1 日期格式转字符串

TO_CHAR()

以下是一个示例代码,演示如何将日期格式转换为字符串:

```sql

SELECT TO_CHAR(TIMESTAMP '2021-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') as date_string;

```

运行结果:

```

date_string ------------------------ 2021-01-01 00:00:00 (1 row)

TO_CHAR()YYYY-MM-DD HH24:MI:SS

```

3.2 字符串转日期格式

TO_TIMESTAMP()

以下是一个示例代码,演示如何将字符串转换为日期格式:

```sql

SELECT TO_TIMESTAMP('2021-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') as date;

```

运行结果:

以下是一个示例代码,演示如何在时区转换后进行日期转换:

```sql

SELECT to_timestamp(1609459200) AT TIME ZONE 'UTC' as date_utc;

SELECT to_timestamp(1609459200) AT TIME ZONE 'America/New_York' as date_ny;

SELECT to_timestamp(1609459200) AT TIME ZONE 'Japan' as date_jp;

```

运行结果:

```

date_utc --------------------- 2021-01-01 00:00:00+00 (1 row)

date_ny --------------------- 2020-12-31 19:00:00-05 (1 row)

date_jp --------------------- 2021-01-01 09:00:00+09 (1 row)

```