2012-02-15 55 views
1

我需要使用流動查詢來計算日期差異,但它不起作用。請指教。在SQL查詢中計算日期差異

SELECT ID, VoucherNo, DateRec, ProductID, Description, ClaimantCo, ClaimantName, City, Phone, DateReturn, ReqJob, WSIns, Remarks, Status, Part1, Part2, Part3, Part4, OtherWSCharges, FDCharges, P1Charges, P2Charges, P3Charges, P4Charges, DateJobBegun, DateJobDone, WSRemarks, TotChargesFromWS, DeliveryStatus, DateDelivered 
FROM tblClaims 
WHERE DateDiff(dd, DateReturn, GETDATE()) =3 

我的目的是獲得記錄,其中三天留給DateRetun,與今天的日期相比。

謝謝

+2

DateReturn數據類型是DateTime? – 2012-02-15 08:42:22

+0

您的錯誤「無法獲取模式」似乎與DateDiff條件無關。如果你在SSMS中運行查詢,你會得到同樣的錯誤嗎? – 2012-02-15 10:37:36

+0

DateReturn是DateTime。如果我脫掉DateDiff部分,則沒有錯誤。 – 2012-02-15 14:33:56

回答

2

我想你剛拿到DATEDIFF參數以錯誤的方式 - 如果你在未來的三天裏你會想說:

datediff(dd, getdate(), DateReturn) = 3 
+0

已更改但同樣的錯誤:無法獲取選擇命令的模式 – 2012-02-15 09:50:33

+0

如果您正在運行SQL Management Studio中的查詢。證明查詢在那裏工作,然後如果你在使用查詢時遇到了模式錯誤,那麼你需要看看你是如何指定結果模式的 – kaj 2012-02-15 13:48:04

0

什麼是DateReturn數據類型?我已經測試如下。如果DateReturn數據類型是DateTime,它應該可以工作。

declare @dt datetime 
set @dt = dateadd(day,-3, getdate()) 

select datediff(dd,@dt, getdate()) 

結果是3

+0

但是如何將它與where子句一起使用 – 2012-02-15 09:51:43

0

也許這樣的事情(如果DateReturn是一個日期):

SELECT 
    DateReturn 
FROM 
    tblClaims 
WHERE 
    tblClaims.DateReturn BETWEEN GETDATE()-3 AND GETDATE() 
+0

同樣的錯誤,無法獲取表格模式 – 2012-02-15 09:52:25

+0

更新答案 – Arion 2012-02-15 09:56:46