pgsql提取列202301261320852的最后两位替换为0
时间: 2024-03-27 13:38:56 浏览: 17
您可以使用 PostgreSQL 中的 `date_trunc`、`extract` 和 `to_timestamp` 函数来将日期时间列中的最后两位替换为0。例如,如果您有一个名为 `my_table` 的表,其中包含一个名为 `my_column` 的日期时间列,并且您想要将该列中的最后两位替换为0,则可以使用以下查询:
```sql
UPDATE my_table SET my_column = to_timestamp(extract(epoch FROM date_trunc('minute', my_column))::int);
```
这将 `my_column` 中的值“2023-01-26 13:20:85”替换为“2023-01-26 13:20:00”。该查询将使用 `date_trunc` 函数将日期时间列的秒数截断为0,并使用 `extract` 函数获取该值的 Unix 时间戳(自 1970 年 1 月 1 日以来的秒数)。然后,将此时间戳转换为新的日期时间值,其中最后两位设置为0。
请注意,如果您的日期时间列包含毫秒(例如“2023-01-26 13:20:85.123”),则上述查询将截断毫秒,并将其替换为0。如果您想要保留毫秒值,则需要相应地调整查询。
相关问题
pgsql提取列202301261320852最后两位数,并用0补齐
您好!您可以使用以下 SQL 语句来提取列 "202301261320852" 的最后两位数,并用 0 补齐:
```
SELECT LPAD(SUBSTRING('202301261320852' FROM -2), 2, '0');
```
执行以上语句后,将会返回结果 "52",其中使用 LPAD() 函数来在左侧补齐 0,使得结果长度为 2。
pgsql提取列202301261320852的前13位数
您可以使用 PostgreSQL 中的 `substring` 函数来提取日期时间列中的前13位数字。例如,如果您有一个名为 `my_table` 的表,其中包含一个名为 `my_column` 的日期时间列,并且您想要提取该列中的前13位数字,则可以使用以下查询:
```sql
SELECT SUBSTRING(CAST(my_column AS TEXT) FROM 1 FOR 13) FROM my_table;
```
这将将 `my_column` 中的值“2023-01-26 13:20:85”提取为“2023012613208”。该查询将日期时间列转换为文本,然后使用 `SUBSTRING` 函数提取前13个字符。
如果您要更新表中的列,而不仅仅是提取前13位数字并将其显示在查询结果中,则可以使用以下更新查询:
```sql
UPDATE my_table SET my_column = SUBSTRING(CAST(my_column AS TEXT) FROM 1 FOR 13);
```
这将将 `my_column` 中的值“2023-01-26 13:20:85”更新为“2023012613208”。