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)
```