如何解决将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 中转换这种确切格式。
解决方法
要获得该月的第一天,请使用 dateadd
和 day
,例如
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 举报,一经查实,本站将立刻删除。