簡體   English   中英

將 oracle 查詢的日期格式轉換為 sql 服務器查詢

[英]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 服務器中轉換這種確切的格式。

要獲取當月的第一天,請使用dateaddday ,例如

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM