iT邦幫忙

0

T-SQL

  • 分享至 

  • xImage

Exec uspGet_WorkingDay ‘2008/1/1’

程序內容如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
create proc [dbo].[uspGet_WorkingDay] @datet1 datetime
as
begin
declare @counter1 int
declare @day_count int

select @counter1 = 0
select @day_count=4

while @counter1 < @day_count
begin
if (datepart(weekday,dateadd(dd,+1,@date1)) != 1 AND datepart(weekday,dateadd(dd,+1,@date1)) != 7)
select @counter1=@counter1+1
select @date1=dateadd(dd,+1,@date1)
end

select @date1 as workingday

end

請問一下執行完會有什麼結果,小弟有點笨實在是看不出來,我是想學資料庫的新手

難經云:「望而知之謂之神,聞而知之謂之聖,問而知之謂之工,切而知之謂之巧」。

程式如果用看的就能看出結果
應該算是神之領域了...

(派大,我們還是去抓水母好了)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
30
jamesjan
iT邦高手 1 級 ‧ 2009-03-13 13:05:34
最佳解答

正確來說是求 傳入的日期 之後扣掉(六)(日)的第四天

datepart(weekday,dateadd(dd,+1,@date1)) != 1 --表非星期日datepart(weekday,dateadd(dd,+1,@date1)) != 7 --表非星期六

26
lurommou
iT邦研究生 4 級 ‧ 2009-03-13 08:14:10

大概意思為,從 ‘2008/1/1’ 的明天起算 4 天內
,有幾個可工作日(周1到周5,排除六(7),日(1))。
PS。沒實際測試,數值部份可能有差異。

20
wonton
iT邦高手 6 級 ‧ 2009-03-13 11:39:55

看起來比較像是,2008/1/1 之後的第四個工作天是哪一天 (2008/1/7),因為最後的 Output 是 @date1

我要發表回答

立即登入回答