首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >case when on sql

case when on sql
EN

Stack Overflow用户
提问于 2012-11-22 17:27:49
回答 3查看 85关注 0票数 0

我的sql脚本出了什么问题?它总是显示错误的语法。

代码语言:javascript
复制
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,具体取决于当前日期。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-22 17:29:00

可能你错过了end,试试这个:

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2012-11-22 17:29:19

你需要End你的案例

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2012-11-22 17:35:43

除了缺少end之外,您的一个case条件永远不会为真

代码语言:javascript
复制
When(DAY(GETDATE()) <= 8 and DAY(GETDATE()) >= 24) 

使用

代码语言:javascript
复制
   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日返回吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13509453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档