oracle - 将所有日期更新为特定年份 - Oracle
问题描述
我在 oracle 表日期字段中有以下日期数据:
3/5/2007
6/3/2008
1/12/2011
我想将所有记录年份部分仅更新到 2020 年。所以输出将是:
3/5/2020
6/3/2020
1/12/2020
我尝试了以下方法,但这仅在所有源年份都具有相同年份并且在我的情况下不起作用时才更新:
update my_table
set datefield = datefield + INTERVAL '2' YEAR
我想要某种以这种方式工作的更新语句(此示例不起作用):
update my_table
set datefield = mon(datefield) + day(datefield) + 2020
我在发布之前研究了这个问题。其他答案也指 add_months 在这种情况下似乎不起作用。
解决方案
您可以尝试将正确的年数添加到输入日期:
UPDATE my_table
SET datefield = ADD_MONTHS(datefield, 12*(2020 - EXTRACT(year FROM datefield)));
因此,在 2007-05-03 的情况下,EXTRACT
上面的计算会发现 17 作为年份差,然后将正确的月数添加到 2003 以将年份调到 2020。
推荐阅读
- google-cloud-platform - Vertex AI Managed Notebook,获取子网/IP
- java - Java ArrayList removeAll
- simulink - 如何使用模拟连接动态负载(直流电机)与光伏系统?
- python - 在 django 中连接到 scss 文件时出错
- html - 对齐不同列中的元素
- reactjs - 构建脚本返回非零退出代码:1,我该怎么办
- data-structures - 删除链表中的最小节点
- android - 图例被 MPAndroidChart 中的饼图截断?
- java - 带有 --enable-preview 的源版本 14 无效(仅版本 15 支持预览语言功能)。\mvnw -DskipTests clean package
- dropdown - 如何使用 java 在 selenium 中处理搜索和选择下拉菜单