سؤال

وأنا متأكد من أن هذا شيء بسيط، ولكن أنا لا يمكن أن يبدو لأنها من أصل الرقم. لماذا لا هذا العمل الرمز؟

DECLARE @FirstSaturday DATETIME
DECLARE @ENDDATE DATETIME

SELECT @FirstSaturday = min(RED1.DATE)
FROM REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED1
WHERE Period = 9 AND year = 2009
SELECT CASE
WHEN getdate() < @FirstSaturday
THEN  set @ENDDATE = getdate()
ELSE  SET @enddate = @FirstSaturday


END

وأود فقط أن يتم تعيين قيمة تاريخ سابق، اليوم أو في نهاية الفترة، لenddate.

ويمكن للشخص لي نقطة في الاتجاه الصحيح؟ أنا باستخدام SQL 2000.

هل كانت مفيدة؟

المحلول

ووSELECT CASE فقط لا تجعل أي معنى، في محاولة: -

DECLARE @FirstSaturday DATETIME
DECLARE @ENDDATE DATETIME

SELECT @FirstSaturday = min(RED1.DATE)
FROM REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED1
WHERE Period = 9 AND year = 2009

SELECT @ENDDATE = CASE
WHEN getdate() < @FirstSaturday
THEN  getdate()
ELSE  @FirstSaturday
END

نصائح أخرى

SELECT @enddate = CASE
WHEN getdate() < @FirstSaturday THEN  getdate()
ELSE  @FirstSaturday
END

CASE في T-SQL هو تعبير (مثل ?: في C)، وليس فرعا التحكم في التدفق مثل IF.

وإضافة الكلمة "النهاية" إلى نهاية البيان حالة

 DECLARE @FirstSaturday DATETIME
 DECLARE @ENDDATE DATETIME
 SELECT @FirstSaturday = min(RED1.DATE)
 FROM REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED1
 WHERE Period = 9 
     AND year = 2009

 SELECT @ENDDATE = 
    Case
      WHEN getdate() < @FirstSaturday
      THEN  getdate()
      ELSE  @FirstSaturday 
    End
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top