我需要转换下面的代码从SQL到Oracle SQL

xxhby3vn  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(142)

我需要将下面的代码从SQL Server转换为Oracle:

Update A
         Set 
          A.ShiftName=@ShiftName,
          A.ShiftStartTime=DATEADD(day,DATEDIFF(day,0,AttendanceDate),
          CAST(S.ShiftStartTime as varchar(8))),
          A.ShiftEndTime=DATEADD(day,DATEDIFF(day,case when @ShiftName='NIGHT' then -1 else 0 end ,
          AttendanceDate),CAST(S.ShiftEndTime as varchar(8))),
          A.ModifiedBy=@UpdatedBy, 
          A.ModifiedOn=GETDATE()
          from Attendance A left join ShiftMaster S on S.[Shift]=@ShiftName
          where AttendanceId=@AttendanceId

字符串

but5z9lq

but5z9lq1#

在Oracle中:

  • DATEADD(day, ...)应使用+运算符实现
  • DATEDIFF应该使用-运算符来实现(但是不清楚你试图通过查找0和日期之间的差异来实现什么)。
  • [identifier]是无效语法,如果标识符区分大小写,则应使用"identifier",如果不区分大小写,则应使用identifier
  • @named_bind_variable应该是:named_bind_variable
  • GETDATE()应该是SYSDATETRUNC(SYSDATE)(如果您想要当天的午夜)。
  • 目前还不清楚为什么要使用CAST将值转换为字符串,并尝试将字符串添加到日期中,因为您没有告诉我们列中保存的数据,但这看起来是错误的。

这应该足够你修改自己的代码了。
你不想把你的代码转换成PL/SQL,因为PL/SQL是Oracle的过程语言。你想把它转换成Oracle的SQL方言(要求把它从SQL转换成Oracle SQL是没有意义的,你的意思可能是从SQL Server SQL转换成Oracle SQL)。

相关问题