如何验证两个日期:确保二者月份保持一致
日期月份一致性验证与修正方案
需求说明:需确保数据表中firstDate与secondDate的月份完全一致,不允许二者月份不同。
原始数据示例
| firstDate | secondDate |
|---|---|
| 2022-12-02 | 2023-01-02 |
| .. | ... |
正确数据示例
| firstDate | secondDate |
|---|---|
| 2022-12-02 | 2023-12-02 |
| ... |
1. 查询月份不一致的数据
通过提取日期的月份部分进行对比,筛选出不符合要求的记录:
PostgreSQL 语法
SELECT firstDate, secondDate FROM your_table_name WHERE EXTRACT(MONTH FROM firstDate) != EXTRACT(MONTH FROM secondDate);
MySQL 语法
SELECT firstDate, secondDate FROM your_table_name WHERE MONTH(firstDate) != MONTH(secondDate);
2. 修正月份不一致的secondDate
将secondDate的月份替换为firstDate的月份,同时保留原有的年份和日期部分:
PostgreSQL 语法
UPDATE your_table_name SET secondDate = TO_DATE( CONCAT( EXTRACT(YEAR FROM secondDate), '-', EXTRACT(MONTH FROM firstDate), '-', EXTRACT(DAY FROM secondDate) ), 'YYYY-MM-DD' ) WHERE EXTRACT(MONTH FROM firstDate) != EXTRACT(MONTH FROM secondDate);
MySQL 语法
UPDATE your_table_name SET secondDate = STR_TO_DATE( CONCAT( YEAR(secondDate), '-', MONTH(firstDate), '-', DAY(secondDate) ), '%Y-%m-%d' ) WHERE MONTH(firstDate) != MONTH(secondDate);
3. 验证修正结果
执行更新后,可通过以下语句确认所有数据月份已一致:
-- 通用语法(PostgreSQL/MySQL均适用) SELECT COUNT(*) AS mismatched_count FROM your_table_name WHERE EXTRACT(MONTH FROM firstDate) != EXTRACT(MONTH FROM secondDate);
若返回结果为0,则说明所有记录的月份已匹配。
内容的提问来源于stack exchange,提问作者Handi Tjioe
相关产品推荐
相关产品推荐

