我有這個sql存儲過程應該查看某個表並根據日期列返回作業編號。除了星期六上午運行時(除了返回所有星期五的工作號以外,還應返回所有工作號)。有什麼建議麼?這裏有沒有我看到的邏輯問題?我該如何跟蹤這件事?SQL查詢錯誤不會返回星期五的值
存儲過程
ALTER Procedure [dbo].[JC_GetJobsClosedYesterday]
As
SELECT [JobNumber]
FROM [NCLGS].[dbo].[JobClosedDate]
Where LastInvoiceDate between dbo.ufn_StartOfDay (DATEADD(d, -1, GETDATE())) AND dbo.ufn_StartOfDay (GETDATE())
order by JobNumber desc
和日間功能的啓動。編輯:我沒有遇到我的日期轉換(除非它不知道如何處理星期五)的麻煩。我需要返回no行部分的幫助。
示例數據:
JobNumber LastInvoiceDate DayOfWeek
112117 2011-06-13 00:00:00.000 Monday
112089 2011-06-10 00:00:00.000 Friday
112090 2011-06-10 00:00:00.000 Friday
112068 2011-06-10 00:00:00.000 Friday
112082 2011-06-10 00:00:00.000 Friday
更新:現在我真的很困惑。這個「星期五沒有數據」的事情已經發生了(上週五再次發生),但我仍然無法弄清楚。 GETDATE()可能不會返回我認爲它返回的內容嗎?因爲當我根據@ Thomas的建議嘗試進行以下修改時,兩種方法都會獲取數據,但是基於此代碼生成的報告最後沒有數據。
DECLARE @date datetime
--SET @date = '2011-06-21 13:42:27.257'
SET @date = '2011-06-11 03:42:27.257'
--Original Code
SELECT [JobNumber]
FROM [NCLGS].[dbo].[JobClosedDate]
Where LastInvoiceDate between dbo.ufn_StartOfDay (DATEADD(d, -1, @date)) AND dbo.ufn_StartOfDay (@date)
order by JobNumber desc
--Returns 21 records
--Modified based on @Thomas suggestion
Select [JobNumber]
From [NCLGS].[dbo].[JobClosedDate]
Where LastInvoiceDate >= DateAdd(d, DateDiff(d, 0, @date) - 1, 0)
And LastInvoiceDate < DateAdd(d, DateDiff(d, 0, @date), 0)
Order By JobNumber Desc
--Returns 21 records
爲什麼不能使用CONVERT(varchar,getdate(),101) – THEn 2011-06-14 17:48:56
@THEn - 沒有理由。這是我繼承的代碼。 – MAW74656 2011-06-14 17:50:45
陶氏你有樣品數據至少有一行沒有顯示.... – THEn 2011-06-14 17:55:24