0

SQL スクリプトの何が問題になっていますか? 常に間違った構文と表示されます。

Select Case 
When(DAY(GETDATE()) <= 23 and DAY(GETDATE()) >= 9) Then Convert(varchar(10),YEAR(getdate()))+'-'+Convert(varchar(10),MONTH(getdate()))+'-'+'9'
When(DAY(GETDATE()) <= 8 and DAY(GETDATE()) >= 24) Then  Convert(varchar(10),YEAR(getdate()))+'-'+Convert(varchar(10),MONTH(getdate()))+'-'+'24'

現在の日付に応じて、2012-11-9 または 2012-11-24 と表示されます。

4

3 に答える 3

4

おそらくあなたは を見逃しましたend、これを試してください:

Select Case 
         When(DAY(GETDATE()) <= 23 and DAY(GETDATE()) >= 9) 
           Then Convert(varchar(10),YEAR(getdate()))+'-'+Convert(varchar(10),MONTH(getdate()))+'-'+'9'
         When(DAY(GETDATE()) <= 8 and DAY(GETDATE()) >= 24) 
           Then  Convert(varchar(10),YEAR(getdate()))+'-'+Convert(varchar(10),MONTH(getdate()))+'-'+'24'
       end as Date1
from YourTable
于 2012-11-22T09:29:00.173 に答える
3

の欠落に加えて、条件endの 1 つが真になることはありませんcase

When(DAY(GETDATE()) <= 8 and DAY(GETDATE()) >= 24) 

使用する

   case when DAY(GETDATE()) between 9 and 23 then CONVERT(varchar(8),getdate(),120) + '9'
        else CONVERT(varchar(8),getdate(),120) + '24'
   end

また、ロジックが疑わしい可能性があります。本当に 10 月 2 日と 30 日の両方を 10 月 24 日に返しますか?

于 2012-11-22T09:35:42.760 に答える
3

Endあなたはあなたのケースに必要です

Select Case 
    When(DAY(GETDATE()) <= 23 and DAY(GETDATE()) >= 9) Then Convert(varchar(10),YEAR(getdate()))+'-'+Convert(varchar(10),MONTH(getdate()))+'-'+'9'
    When(DAY(GETDATE()) <= 8 and DAY(GETDATE()) >= 24) Then  Convert(varchar(10),YEAR(getdate()))+'-'+Convert(varchar(10),MONTH(getdate()))+'-'+'24'
End
于 2012-11-22T09:29:18.647 に答える