仅从 oracle sql 更新月份和年份的简单语句

Posted

技术标签:

【中文标题】仅从 oracle sql 更新月份和年份的简单语句【英文标题】:Simple statement to update only the month and year from oracle sql 【发布时间】:2019-07-06 17:06:10 【问题描述】:

我正在使用 Oracle SQL,并且我有不同月份和年份的日期。但是,我需要一个简单的更新语句来更新到特定的月份和年份而不更改日期。

我尝试将 add_months 与 months_between 一起使用,但它会引发一些错误,说明数据类型不一致。所以这行不通。

我尝试过的命令:

UPDATE MYDATE=ADD_MONTHS(MYDATE,MONTHS_BETWEEN(TRUNC('Jun','mm'),trunc(MYDATE,'mm)))

例如:

MYDATE
01/02/18
03/05/17

预期结果:

01/06/19
03/06/19

【问题讨论】:

Oracle SQL Create Date from Parts的可能重复 【参考方案1】:

你可以使用

update tab
   set mydate=to_date(to_char(mydate,'dd')||'06'||to_char(sysdate,'yyyy'),'ddmmyyyy')

因为month 是固定的,year 是当前的

Demo

或者,你可以试试

update tab
   set mydate=add_months( mydate, round(months_between(
                         to_date('2019-06-'||to_char(mydate,'dd'),'yyyy-mm-dd'),mydate)) ) 

add_monthsmonths_between 在一起

Demo

【讨论】:

您好,我尝试执行此操作,但它已经运行了很长时间。还有其他说法吗? @user9340817 嗨,我添加了另一个案例。

以上是关于仅从 oracle sql 更新月份和年份的简单语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL取系统时间的前一个月的月份和年份

如何仅从 sql server 2008 中的日期中提取年份?

SQL 查询每个月统计的数据。

月份和年份的 SQL 查询

SQL Server 2008 仅在月份和年份之间选择数据

如何在包含单词、三个字母月份和两位数字年份的字符串中搜索月份和年份并将它们转换为 SQL 中的日期?