【发布时间】:2016-05-12 09:51:39
【问题描述】:
有人可以帮助我吗? 我有一个具有这种结构的字段:2,3,4,5,6,0,1 他们是星期几,如果今天是一周中的最后一个交货日,我必须找出什么时候,问题是这样的:
例如,今天是第 3 天,通过以下查询,我可以选择所有以数字 3 结尾的人,但如果我有人具有这种结构:3,0,1 或 3,1 或 3,0我不明白。
declare @today int
set @today=DATEPART(dw,GETDATE())-2
print @today
select cast (cfv.value as VARCHAR)
from CompanyFieldvalues cfv
join CompanyFields cf on cf.companyFieldId=cfv.companyFieldId
where cf.name='NextDeliveryDates' and cfv.companyId in(
select cfv.companyId
from CompanyFieldvalues cfv
join Companies c on c.companyId=cfv.companyId
where cfv.value='Retailer' and c.status=1)
and (cfv.value like '%,' + cast (@today as VARCHAR) or cfv.value like '%' + cast (@today as VARCHAR))
为了解决这个问题,我很难介绍一个案例,所以我的查询将是这个:
declare @today int
set @today=DATEPART(dw,GETDATE())-2
print @today
select cast (cfv.value as VARCHAR)
from CompanyFieldvalues cfv
join CompanyFields cf on cf.companyFieldId=cfv.companyFieldId
where cf.name='NextDeliveryDates' and cfv.companyId in(
select cfv.companyId
from CompanyFieldvalues cfv
join Companies c on c.companyId=cfv.companyId
where cfv.value='Retailer' and c.status=1)
and (cfv.value like '%,' + cast (@today as VARCHAR) or cfv.value like '%' + cast (@today as VARCHAR)) and case
when (@today != 0 or @today!=1)
then (cfv.value not like '%,0' or cfv.value not like '%,1')
但在这种情况下,我会收到以下错误消息:
Msg 156, Level 15, State 1, Line 14 关键字附近的语法错误 '不是'。
我确定我犯了一些愚蠢的错误,但我不明白:S
请帮忙! 非常感谢
【问题讨论】:
-
标记使用的 dbms,那里有很多特定于产品的 SQL...
-
我的意思是标记您正在使用的 dbms 产品。 (例如 SQL Server,或 Oracle,或 Sybase 或其他。)那么你的问题会得到更好的关注,你会得到更好的答案,更快!
标签: sql database datetime case ssms-2012