T-SQL找出上個禮拜的訂單

上個禮拜被考了一個過濾出上個禮拜的訂單的sql

重點是用考卷寫

當時真的是很無力

沒有IDE沒有Internet

上個禮拜被考了一個過濾出上個禮拜的訂單的sql

重點是用考卷寫

當時真的是很無力

沒有IDE沒有Internet

最後只好寫下

select * from orders where orderDate between funcA() and funcB()

的答案,不過想必對方是不接受這種答案吧XD

 

回家痛定失痛要加強sql

先來補上這個問題的解法

CREATE FUNCTION [dbo].[LastWeek](@FirstDate CHAR(3))
RETURNS DATETIME 
begin
declare @result DATETIME
select @result = (
	SELECT 
	CASE @FirstDate
		WHEN 'mon' THEN
			CONVERT(NVARCHAR,DATEADD(DAY,- (datepart(WEEKDAY,GETDATE())+6),GETDATE()),112)
		ELSE
			CASE DATEPART(WEEKDAY,GETDATE())
			WHEN 7 THEN			
				CONVERT(NVARCHAR,DATEADD(DAY,- datepart(WEEKDAY,GETDATE()+7),GETDATE()),112)
			ELSE
				CONVERT(NVARCHAR,DATEADD(DAY,- (datepart(WEEKDAY,GETDATE())+7),GETDATE()),112)
			END	
		END	
)
RETURN @result
END 

呼叫時

SET DATEFIRST 1
SELECT dbo.LastWeek('mon')
SELECT dbo.LastWeek('sun')

測過沒問題

但不一定是最佳寫法