【发布时间】:2015-10-15 14:32:49
【问题描述】:
过去一个小时我一直在研究这个问题,但似乎无法让它发挥作用。 我需要做的就是插入这些值,但我需要跳过包含星期六或星期日的插入。
Begin Tran
Declare @VaccID int = 26
Declare @Clinic int = 36
Declare @Enroll int = 30
Declare @SignUp int = 0
Declare @BlnAct int = 1
Declare @BlnDis int = 1
Declare @DateStartTime datetime = '2015-09-16 11:00:00.000'
Declare @DateEndTime datetime = '2015-09-16 14:00:00.000'
Declare @EndDate date = '2015-10-16'
Declare @Days int = DATEDIFF(dd, @DateStartTime, @EndDate)
Select @DateStartTime, @DateEndTime, @Days
Declare @i int = 0
Declare @WeekDay varchar = ''
WHILE @i <= @Days
IF(@WeekDay = 'Monday' OR
@WeekDay = 'Tuesday' OR
@WeekDay = 'Wednesday' OR
@WeekDay = 'Thursday' OR
@WeekDay = 'Friday')
Begin
INSERT INTO dbo.tblSessions
([intVaccID],
[intLocationID],
[dtDateTimeStart],
[dtDateTimeStop],
[intEnrollmentMax],
[intSignedUp],
[blnActive],
[blnDisplay])
Values (@VaccID,
@Clinic,
DATEADD(dd, @i, @DateStartTime),
DATEADD(dd, @i, @DateEndTime),
@Enroll,
@SignUp,
@BlnAct,
@BlnDis)
SELECT @VaccID as intVaccID,
@Clinic as intLocationID,
DATEADD(dd, @i, @DateStartTime) as dtDateTimeStart,
DATEADD(dd, @i, @DateEndTime) as dtDateTimeStop,
@Enroll as intEnrollmentMax,
@SignUp as intSignedUp,
@BlnAct as blnActive,
@BlnDis as blnDisplay
SET @i = @i + 1
SET @WeekDay = DAYOFWEEK(dw, DATEADD(dd, @i, @DateStartTime))
END
Rollback Tran
Commit Tran
它至少在一周中的每一天都在填写,但现在似乎正在暂停查询。我知道我错过了一些可笑的小东西,但我似乎无法找到它。我想这是我今天的白鲸。
【问题讨论】:
-
嗯,你的“如果”错了吗?因为@weekday 被声明为''所以工作日永远不会是星期五或星期四等
标签: sql-server while-loop dayofweek