微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将oracle查询的日期格式转换为sql server查询

如何解决将oracle查询的日期格式转换为sql server查询

我正在尝试将以下 oracle 查询转换为 sql 服务器查询

Select * from table A
WHERE  Trunc(a.Generate_DATE,'MM') = (SELECT (NVL (Trunc (TO_DATE ('$$date','MM/DD/YYYY HH24:MI:SS')),Trunc(ADD_MONTHS(SYSDATE,-1),'MM'))) FROM DUAL)

其中 $$date 是参数值,将从查询外部传递。

问题在于日期格式。我无法在 sql server 中转换这种确切格式。

解决方法

要获得该月的第一天,请使用 dateaddday,例如

declare @d date = getdate()
select dateadd(day,1-day(@d),@d)

对于 NVL 使用标准的 coalesce 函数。

对于 TRUNC 使用 cast(getdate() as date)

对于 ADD_MONTHS(SYSDATE,-1) 使用 dateadd(month,-1,getdate())

或去获取 SQL Server Migration Assistant for Oracle,它会为您将 Oracle SQL 和 PL/SQL 转换为 TSQL。它还安装了一堆兼容性功能,因此使用 SSMA 将其转换为:

WHERE ssma_oracle.trunc_date2(A.END_DATE,'MM') = 
   (
      SELECT isnull(ssma_oracle.trunc_date(ssma_oracle.to_date2('12/01/2020 18:15:00','MM/DD/YYYY HH24:MI:SS')),ssma_oracle.trunc_date2(dateadd(m,sysdatetime()),'MM')) AS expr
   )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。