[英]convert date format of oracle query to sql server query
我正在尝试将 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 是参数值,将从查询外部传递。
问题出在 dateformat 上。我无法在 sql 服务器中转换这种确切的格式。
要获取当月的第一天,请使用dateadd
和day
,例如
declare @d date = getdate()
select dateadd(day, 1-day(@d), @d)
对于NVL
,使用标准合并function。
对于TRUNC
使用cast(getdate() as date)
对于ADD_MONTHS(SYSDATE, -1)
使用dateadd(month,-1,getdate())
or go get the SQL Server Migration Assistant for Oracle , which will translate Oracle SQL and PL/SQL to TSQL for you. 它还安装了一堆兼容性功能,因此使用 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, -1, sysdatetime()), 'MM')) AS expr
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.