我需要在每年的7月1日至10月31日之间获取日期范围。基于此,我必须更新另一列。获取每年仅有月和日的日期范围
日期字段是日期时间。应该是这样的:
Select Cash = Case When date between '1st July' and '31st October' Then (Cash * 2) End
From MytTable
注意:这个范围应该适用于每一年。
我需要在每年的7月1日至10月31日之间获取日期范围。基于此,我必须更新另一列。获取每年仅有月和日的日期范围
日期字段是日期时间。应该是这样的:
Select Cash = Case When date between '1st July' and '31st October' Then (Cash * 2) End
From MytTable
注意:这个范围应该适用于每一年。
这是一种方式:
SELECT Cash = CASE WHEN RIGHT(CONVERT(VARCHAR(8),[date],112),4)
BETWEEN '0701' AND '1031' THEN Cash*2
ELSE Cash END --I added this
对于你的情况,你可以只使用了一个月,并确保它落在7 10.
之间
这是您的查询将会如何:select Cash = case when month([Date]) in (7, 8, 9, 10) then (Cash * 2) else Cash end
或
select Cash = case when month([Date]) between 7 and 10 then (Cash * 2) else Cash end
请尝试这一个:
DECLARE @DT DATE = GETUTCDATE() , @START_DATE VARCHAR(10) = '07-01' , @END_DATE VARCHAR(10) = '10-31'
SELECT
CASE
WHEN RIGHT(@DT,5) BETWEEN @START_DATE AND @END_DATE
THEN
(CASH * 2)
ELSE
'NO MATCH'
END AS CASH
此解决方案为我工作以获得一些按月份和日期重复计划的主题。它处理跨越多个年例如定于11月1日至3月1日
的项目我的数据存储这样的:
ThemeName, StartMonth, StartDay, EndMonth, EndDay
Christmas, 12,1,12,26
Winter, 11, 1, 3, 1
Spring, 3,1,5,1
Sports, 0,0,0,0 //continuous
下面是该查询:
SELECT
DISTINCT ThemeName
FROM (
SELECT
CASE WHEN EndDate < StartDate AND ((Current Between StartDate AND 1231) OR (Current Between 0101 AND EndDate)) THEN -- span multiple year between dates
ThemeName
WHEN StartDate < EndDate AND Current Between StartDate AND EndDate THEN -- normal between dates
ThemeName
WHEN StartDate = 0 AND EndDate = 0 THEN -- continuous
ThemeName
ELSE
'NG'
END as ThemeName
FROM (
SELECT
ThemeName, StartDate, EndDate, Current
FROM (
SELECT
ThemeName,
CAST(Concat(LPAD(CONVERT(StartMonth , CHAR(2)),2,'0'), LPAD(CONVERT(StartDay , CHAR(2)),2,'0')) as DECIMAL) as StartDate,
CAST(Concat(LPAD(CONVERT(EndMonth , CHAR(2)),2,'0'), LPAD(CONVERT(EndDay , CHAR(2)),2,'0')) as DECIMAL) as EndDate,
CAST(Concat(LPAD(CONVERT(MONTH(CURRENT_DATE) , CHAR(2)),2,'0'), LPAD(CONVERT(DAY(CURRENT_DATE) , CHAR(2)),2,'0')) as DECIMAL) as current
FROM
companythemeschedules
WHERE
companyid = 221
) a
) b
) c
WHERE
ThemeName != 'NG'
我不是在寻找upvote。刚刚发布了我的解决方案,因为我的搜索找到了此页面,可能有助于其他人访问此解决方案 –
感谢Lamak ..你的回答是在我的情况下工作..非常感谢! – Ritesh
11月1日至3月1日之间的情况如何?即:'1101'和'0301'之间这是行不通的。我需要一个解决方案,它跨越了一年的变化,但我们不想包括一年,因为这是一个循环调度程序。也许两个之间? BETWEEN('1101'和'1231)或('0101'和'0301') –
@ JJ_Coder4Hire如果你需要这个,那么你可以问一个问题,并确切指定你的要求(哦,并确保首先搜索对于类似的问题) – Lamak