pgsql将整列"20230322101841”拼接为“2023-03-22 10:18:41”
时间: 2024-03-23 09:43:51 浏览: 17
你可以使用 PostgreSQL 的内置函数 `to_timestamp` 和 `substring` 来实现这个操作。具体方法如下:
```
SELECT to_timestamp(
substring('20230322101841' from 1 for 4) || '-' ||
substring('20230322101841' from 5 for 2) || '-' ||
substring('20230322101841' from 7 for 2) || ' ' ||
substring('20230322101841' from 9 for 2) || ':' ||
substring('20230322101841' from 11 for 2) || ':' ||
substring('20230322101841' from 13 for 2),
'YYYY-MM-DD HH24:MI:SS'
);
```
这个查询会输出以下结果:
```
to_timestamp
---------------------------
2023-03-22 10:18:41+00:00
(1 row)
```
其中,`substring` 函数用来截取年、月、日、时、分、秒的值,然后使用字符串拼接符 `||` 拼接成一个字符串,最后使用 `to_timestamp` 函数将这个字符串转换为时间戳类型。注意,最后一个参数 `'YYYY-MM-DD HH24:MI:SS'` 用来指定时间戳的格式。
相关问题
pgsql将整列txt"20230322101841”拼接为“2023-03-22 10:18:41”
你可以使用 PostgreSQL 的内置函数 `to_timestamp` 和 `substring` 来实现这个操作。假设你的列名为 `txt`,具体方法如下:
```
SELECT to_timestamp(
substring(txt from 1 for 4) || '-' ||
substring(txt from 5 for 2) || '-' ||
substring(txt from 7 for 2) || ' ' ||
substring(txt from 9 for 2) || ':' ||
substring(txt from 11 for 2) || ':' ||
substring(txt from 13 for 2),
'YYYY-MM-DD HH24:MI:SS'
) AS timestamp_col
FROM your_table;
```
这个查询会将你的 `txt` 列中的字符串转换为时间戳类型,并将其命名为 `timestamp_col`。你需要将 `your_table` 替换为实际表名。输出结果将包含一个新的列 `timestamp_col`,其中包含转换后的时间戳值。
如果你想要将转换后的时间戳值存储到一个新的列中,你可以使用 `ALTER TABLE` 命令添加一个新的列,然后使用 `UPDATE` 命令将转换后的时间戳值插入到新的列中。例如:
```
ALTER TABLE your_table ADD COLUMN timestamp_col TIMESTAMP;
UPDATE your_table SET timestamp_col = to_timestamp(
substring(txt from 1 for 4) || '-' ||
substring(txt from 5 for 2) || '-' ||
substring(txt from 7 for 2) || ' ' ||
substring(txt from 9 for 2) || ':' ||
substring(txt from 11 for 2) || ':' ||
substring(txt from 13 for 2),
'YYYY-MM-DD HH24:MI:SS'
);
```
这个命令将在 `your_table` 表中添加一个名为 `timestamp_col` 的新列,并将转换后的时间戳值插入到该列中。
pgsql提取列202301261320852转换为2023-01-26 13:20:85.123
您可以使用 PostgreSQL 中的 `to_char` 函数将日期时间列转换为指定的字符串格式。例如,如果您有一个名为 `my_table` 的表,其中包含一个名为 `my_column` 的日期时间列,并且您想要将该列中的值“202301261320852”转换为格式为“YYYY-MM-DD HH24:MI:SS.US”的字符串,则可以使用以下查询:
```sql
SELECT to_char(to_timestamp(my_column::text, 'YYYYMMDDHH24MISSMS'), 'YYYY-MM-DD HH24:MI:SS.US') FROM my_table;
```
该查询将 `my_column` 中的值“202301261320852”转换为“2023-01-26 13:20:85.200”,其中最后两位被转换为毫秒值。它使用 `to_timestamp` 函数将日期时间列转换为时间戳,并使用 `'YYYYMMDDHH24MISSMS'` 格式字符串指定输入格式。然后,使用 `to_char` 函数将时间戳转换为指定的字符串格式。
如果您要更新表中的列,而不仅仅是将其转换为字符串并将其显示在查询结果中,则可以使用以下更新查询:
```sql
UPDATE my_table SET my_column = to_timestamp(my_column::text, 'YYYYMMDDHH24MISSMS');
```
这将 `my_column` 中的值“202301261320852”更新为“2023-01-26 13:20:85.200”。