ISOWEEK的演算法
算ISOWEEK的時候,通常是以(該日的所屬週數+1 )- (該年的1-4所屬週數),但也有特殊的情況,case1 :可能當年的一月1號到3號是屬於前年的,case2 : 可能前年12月29到31號是屬於下一年的.
SQL的演算法
CREATE FUNCTION ISOweek (@DATE datetime)
RETURNS int
AS
BEGIN
DECLARE @ISOweek int
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
--Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1
RETURN(@ISOweek)
END
VB的演算法
Public Function CaclISOWeek(ByVal dt As Date ) As Integer
Dim tmpdate As Date
Dim isowkid As Integer
isowkid = DatePart("ww",dt)+1-DatePart("ww",DateSerial(Year(dt),01,04))
If isowkid = 0 Then
tmpdate = DateSerial(Year(dt)-1,12,24+Day(dt))
isowkid = DatePart("ww",tmpdate)+1-DatePart("ww",DateSerial(Year(dt)-1,01,04))+1
End If
If ((DatePart("m",dt)=12) And ((DatePart("d",dt)- DatePart("w",dt))>= 28)) Then
isowkid = 1
End If
CaclISOWeek = isowkid
End Function
下面再講一下ISOWEEK的年開始日
ISOweek 一年的開始日的演算法應該是先確定當年的一月一號是否星期4或星期五,假如是星期4或星期5,那年的開始日應該是分別加4或加3,找到下個星期的星期一;假如是其他的星期天數,那就用[x-2](x為用weekday 函式算出的數字,假如星期天x為1,假如星期六為7)算出星期一的那天天數.
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/443058/viewspace-912196/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 演算法心得:高效演算法的奧祕演算法
- 有趣的演算法演算法
- 【演算法】演算法菜鳥的爛筆頭演算法
- [演算法] 演算法菜鳥的爛筆頭演算法
- “快速排序演算法”問題的分而治之演算法排序演算法
- 《演算法的樂趣》,快樂學習演算法,學習貼近生活的演算法演算法
- 可愛的演算法書——《啊哈!演算法》編輯的話演算法
- loveasm的crackme演算法分析-----CRC32演算法的妙用ASM演算法
- c/c++ 通用的(泛型)演算法 之 只讀演算法,寫演算法,排序演算法C++泛型演算法排序
- 演算法妙應用-演算法的複雜度演算法複雜度
- JavaScript實現《啊哈!演算法》中的系列演算法JavaScript演算法
- 你需要知道的演算法之排序演算法演算法排序
- 有趣的演算法世界---什麼是演算法 (轉)演算法
- 演算法的力量,李開復聊演算法的重要性演算法
- 《演算法帝國》:被演算法和演算法交易改變的未來(上)演算法
- 加密演算法的使用加密演算法
- React的diff演算法React演算法
- 好玩兒的演算法演算法
- 【演算法的樂趣】演算法
- simhash演算法的原理演算法
- php的冒泡演算法PHP演算法
- 高斯模糊的演算法演算法
- 基礎的演算法演算法
- svm的smo演算法演算法
- 演算法系列1 初識演算法 演算法複雜性模型 演算法複雜度的計算演算法模型複雜度
- Twitter雪花演算法SnowFlake演算法的java實現演算法Java
- 模式識別中的Apriori演算法和FPGrowth演算法模式演算法
- 粒子群演算法和遺傳演算法的比較演算法
- 資料結構和演算法——棧的面試演算法資料結構演算法面試
- 加密演算法介紹及加密演算法的選擇加密演算法
- RIPEMD演算法:多功能雜湊演算法的瑰寶演算法
- 演算法金 | 一個強大的演算法模型,GPR !!演算法模型
- 演算法金 | 一個強大的演算法模型,GP !!演算法模型
- 演算法金 | Transformer,一個神奇的演算法模型!!演算法ORM模型
- 圖的演算法的總結演算法
- 進化演算法、遺傳演算法與粒子群演算法之間的比較演算法
- 演算法設計與分析中的幾個核心演算法策略:動態規劃、貪心演算法、回溯演算法和分治演算法演算法動態規劃
- bang 你的jive中的hash加密演算法有相應的解密演算法嗎?加密演算法解密