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













