postgres timestamp转换器
时间: 2023-09-04 19:16:02 浏览: 49
在 PostgreSQL 中,可以使用以下方式将时间戳转换为可读格式:
```sql
SELECT to_char(timestamp 'epoch' + your_timestamp_column * interval '1 second', 'YYYY-MM-DD HH24:MI:SS') AS readable_timestamp FROM your_table;
```
其中,`your_timestamp_column` 是包含时间戳的列名,`readable_timestamp` 是转换后的可读格式。可以根据需要修改日期时间格式。
相关问题
postgres timestamp转数字
PostgreSQL中的时间戳类型是`timestamp`,它表示从公元1970年1月1日午夜(格林威治时间)开始的秒数。
如果您想将一个`timestamp`类型的时间戳转换为数字,可以使用`extract(epoch from timestamp)`函数来获取从1970年1月1日午夜以来的秒数。例如:
```
SELECT extract(epoch from '2021-08-12 12:34:56'::timestamp);
```
这将返回一个数字,表示从1970年1月1日午夜以来的秒数。在本例中,该数字为1628769296。
另外,如果您想将一个包含日期和时间的字符串转换为`timestamp`类型,可以使用`to_timestamp()`函数。例如:
```
SELECT to_timestamp('2021-08-12 12:34:56', 'YYYY-MM-DD HH24:MI:SS');
```
这将返回一个`timestamp`类型的值,表示指定的日期和时间。
postgres行列转换
PostgreSQL中可以使用crosstab函数将行转换为列。 该函数需要安装tablefunc扩展。以下是一个示例:
假设我们有以下表格:
```
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
year INT NOT NULL,
quarter INT NOT NULL,
amount NUMERIC(10,2) NOT NULL
);
INSERT INTO sales (year, quarter, amount)
VALUES
(2019, 1, 1000),
(2019, 2, 1500),
(2019, 3, 2000),
(2019, 4, 2500),
(2020, 1, 3000),
(2020, 2, 3500),
(2020, 3, 4000),
(2020, 4, 4500);
```
我们想将它转换为以下格式:
```
year | Q1 | Q2 | Q3 | Q4
-----+------+------+------+-----
2019 | 1000 | 1500 | 2000 | 2500
2020 | 3000 | 3500 | 4000 | 4500
```
我们可以使用以下查询:
```
SELECT *
FROM crosstab(
'SELECT year, quarter, amount FROM sales ORDER BY 1,2',
'SELECT unnest(ARRAY[1,2,3,4])'
) AS ct(year INT, Q1 NUMERIC, Q2 NUMERIC, Q3 NUMERIC, Q4 NUMERIC);
```
该查询使用了两个SELECT语句,第一个SELECT返回原始数据,第二个SELECT返回列名。注意,列名的数量和顺序必须与转换后的表格一致。
输出结果如下:
```
year | q1 | q2 | q3 | q4
------+-------+-------+-------+-------
2019 | 1000.00 | 1500.00 | 2000.00 | 2500.00
2020 | 3000.00 | 3500.00 | 4000.00 | 4500.00
```