pgsql将列“2023-01-26 13:20:85”中的最后两位都替换为00
时间: 2024-03-27 19:38:50 浏览: 55
您可以使用以下 PostgreSQL 查询来将列中的最后两位替换为00:
```sql
UPDATE 表名 SET 列名 = date_trunc('minute', 列名) + interval '1 second' * (extract('epoch' from 列名)::int / 60);
```
例如,如果您有一个名为 my_table 的表,其中包含一个名为 my_column 的日期时间列,并且您想要将该列中的最后两位替换为00,则可以使用以下查询:
```sql
UPDATE my_table SET my_column = date_trunc('minute', my_column) + interval '1 second' * (extract('epoch' from my_column)::int / 60);
```
这将将 my_column 中的值“2023-01-26 13:20:85”替换为“2023-01-26 13:20:00”。
相关问题
pgsql提取列202301261320852的最后两位替换为0
您可以使用 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 截取第二位到倒数第三位
在PostgreSQL中,如果你想要从某个字段截取数据,通常可以使用字符串函数`substring()`或者`substr()`. 这两个函数都可以用来获取指定位置范围内的字符。假设你想从第三个字符开始截取到倒数第二个字符(即排除最后一个字符),你可以这样做:
```sql
SELECT substring(your_column_name FROM '^(.{3}..*)$') AS sliced_string
FROM your_table;
```
这里:
- `your_column_name`是你想截取的字段名。
- `^{.{3}..*}$`是一个正则表达式,`^`表示开始,`.`匹配任意单个字符,`{3}`匹配三次,`..*`匹配零次或多次直到字符串结束,`$`表示结束。
注意这个例子是从第三个字符开始到字符串结尾,如果需要精确到倒数第三个字符,你应该将`..*`替换为`.{1}`,如:
```sql
SELECT substring(your_column_name FROM '^(.{3}).{0,1}$') AS sliced_string
FROM your_table;
```
这会得到从第三个到最后一个或者倒数第二个字符的结果。
阅读全文