0
点赞
收藏
分享

微信扫一扫

pgsql将12月份时间的数据修改成3月份

在 PostgreSQL 中,可以使用 `UPDATE` 语句结合 `DATE_TRUNC` 和 `MAKE_DATE` 函数将 12 月份的时间数据修改为 3 月份。以下是一个示例 SQL 语句:

UPDATE qzx_jq_jjdb
SET  
    cjsj = MAKE_DATE(EXTRACT(YEAR FROM cjsj)::integer, 3, EXTRACT(DAY FROM cjsj)::integer) +  
           MAKE_TIME(EXTRACT(HOUR FROM cjsj)::integer, EXTRACT(MINUTE FROM cjsj)::integer, EXTRACT(SECOND FROM cjsj)::integer),

    bjsj = MAKE_DATE(EXTRACT(YEAR FROM bjsj)::integer, 3, EXTRACT(DAY FROM bjsj)::integer) +  
           MAKE_TIME(EXTRACT(HOUR FROM bjsj)::integer, EXTRACT(MINUTE FROM bjsj)::integer, EXTRACT(SECOND FROM bjsj)::integer)
WHERE EXTRACT(MONTH FROM cjsj) = 12;

说明:

1. **`MAKE_DATE`**:用于创建一个新的日期值,指定年份、月份和日期。

2. **`MAKE_TIME`**:用于创建一个新的时间值,指定小时、分钟和秒。

3. **`EXTRACT`**:用于从时间字段中提取特定的部分,例如年份、月份、日期、小时等。

4. **`WHERE EXTRACT(MONTH FROM cjsj) = 12`**:确保只更新 `cjsj` 字段中月份为 12 的记录。

示例:

假设表名是 `qzx_jq_jjdb`,时间字段是 `cjsj` 和 `bjsj`,那么语句如下:

UPDATE qzx_jq_jjdb
SET  
    cjsj = MAKE_DATE(EXTRACT(YEAR FROM cjsj)::integer, 3, EXTRACT(DAY FROM cjsj)::integer) +  
           MAKE_TIME(EXTRACT(HOUR FROM cjsj)::integer, EXTRACT(MINUTE FROM cjsj)::integer, EXTRACT(SECOND FROM cjsj)::integer),

    bjsj = MAKE_DATE(EXTRACT(YEAR FROM bjsj)::integer, 3, EXTRACT(DAY FROM bjsj)::integer) +  
           MAKE_TIME(EXTRACT(HOUR FROM bjsj)::integer, EXTRACT(MINUTE FROM bjsj)::integer, EXTRACT(SECOND FROM bjsj)::integer)
WHERE EXTRACT(MONTH FROM cjsj) = 12;

注意事项:

- 在执行更新操作之前,建议先备份数据,以免误操作导致数据丢失。

- 如果你的表中有多个时间字段需要更新,可以逐一更新,或者使用多个 `SET` 子句一次性更新多个字段。

- 如果需要更新的记录较多,操作可能会花费一些时间,请耐心等待执行完成。

测试更新:

在执行更新之前,可以先用 `SELECT` 语句测试一下哪些记录会被更新:

SELECT *  
FROM qzx_jq_jjdb
WHERE EXTRACT(MONTH FROM cjsj) = 12;

这将返回所有 `cjsj` 字段中月份为 12 的记录,确保这些记录是你想要更新的。

举报

相关推荐

0 条评论