2014-04-14 4 views
0

Какие-либо идеи, что не так, со следующим кодом?Case With Datepart Для буднего дня

Я пытаюсь написать тематическое заявление, которое возвращает текущую дату на понедельник еще принимает максимальную дату из таблицы, если текущая дата инст понедельник

Благодаря

SELECT 
CASE [EffectiveDate] 
When datepart(weekday,getdate()) = 1 Then cast(getdate() as date) 
Else max ([EffectiveDate]) 
End, 
FROM 
[ARCDAL01PR].[ArcTimeSeries].[arc_ts_data].[PriceCurveData] 
WHERE 
[CurveName] = 'G_H_TTF.EUR' 

ответ

0
SELECT 
CASE [EffectiveDate] 
When datepart(weekday,getdate()) = 2 Then cast(getdate() as date) 
Else max ([EffectiveDate]) 
End, 
FROM 
[ARCDAL01PR].[ArcTimeSeries].[arc_ts_data].[PriceCurveData] 
WHERE 
[CurveName] = 'G_H_TTF.EUR 

Понедельник должен 2-й день недели. В конце концов, и можно попробовать это при использовании SQL Server 2012

SELECT 
CASE [EffectiveDate] 
When weekday(getdate(),2) = 1 Then cast(getdate() as date) 
Else max ([EffectiveDate]) 
End, 
FROM 
[ARCDAL01PR].[ArcTimeSeries].[arc_ts_data].[PriceCurveData] 
WHERE 
[CurveName] = 'G_H_TTF.EUR 

Update

SELECT 
CASE 
When datepart(weekday,getdate()) = 2 Then cast(getdate() as date) 
Else max ([EffectiveDate]) 
End as [EffectiveDate] 
FROM 
[ARCDAL01PR].[ArcTimeSeries].[arc_ts_data].[PriceCurveData] 
WHERE 
[CurveName] = 'G_H_TTF.EUR' 
+0

Вы можете SELECT @@ DATEFIRST первым, чтобы гарантировать, что локальные настройки календаря были назначены понедельник к ожидаемому день , –

+0

Спасибо за это. Когда я пытаюсь выполнить первый бит кода, я получаю сообщение об ошибке «Неправильный синтаксис рядом с« = ». Есть идеи? –

+0

Исправлено. После этого не было необходимости "," :). – glaeran

Смежные вопросы