הבלוג של גרי רשף

17/10/2011

מועדי ישראל

Filed under: Uncategorized — גרי רשף @ 13:49

לפני יותר מחצי שנה כתבתי פוסט על חישוב הלוח העברי, וציינתי בסופו שמי שרוצה- יכול לגזור ממנו בקלות את תאריכי החגים והמועדים; ובעיני רוחי חשבתי שזה פשוט: יוצרים טבלת מועדים (ראש השנה א & ב בתשרי, חנוכה כ"ה בכסלו וכו'), מבצעים Join בין טבלת התאריכים לבינה וזהו; דא עקא שהסיפור קצת יותר מסובך:

צום גדליה– אינו חל בשבת, ובמקרה כזה (כמו השנה) הוא נדחה ביום.

חנוכה– שלושת הימים האחרונים חלים לעיתים בתאריכים א טבת & ב טבת & ג טבת, ולעיתים בתאריכים ל כסלו & א טבת & ב טבת; תלוי אם כסלו הוא חודש חסר או חודש רגיל בהתאמה.

תענית אסתר– לא תחול בשבת, ובמקרה זה תוקדם ביומיים.

פורים משולש– מתבייש לומר אבל לא ידעתי שיש דבר כזה: כאשר שושן פורים חל בשבת, חלק מהמצוות נדחות ליום ראשון ואז יש פורים משולש.

י"ז בתמוז– לא חל בשבת, ובמקרה זה ידחה ביום.

ט' באב– לא חל בשבת, ובמקרה זה ידחה ביום.

ולגבי החגים הלאומיים הכללים הרבה יותר מסובכים:

יום הזיכרון לשואה ולגבורה– מציינים אותו משנת 1959 ה'תשי"ט. משנת 1997 הוא לא חל ביום ראשון (כדי שאירועי הפתיחה לא יגרמו לחילול שבת) ובמקרה זה הוא נדחה ליום שני.

יום הזיכרון לחללי צה"ל ויום העצמאות– מציינים אותם משנת 1949 ה'תש"ט. כשיום העצמאות מתוכנן לחול בשישי או בשבת הם מוקדמים ביום או ביומיים בהתאמה. החל משנת 2004 יום הזכרון לא חל ביום ראשון, ובמקרה כזה הם נדחים ביום.

יום ירושלים– מציינים אותו החל משנת 1968 ה'תשכ"ח.

לא ציינתי חגים עדתיים, יארצייטים לגדולי האומה, ערבי חג, אסרו חג וכו'.

הסקריפט שלהלן מבוסס על זה שבפוסט המקורי, והוספתי לו מודול CTE נוסף (Moadim) כשכל הלוגיקה נמצאת בו ובתנאי ה-On:

 

Declare    @Molad DateTime,
        @Shana Int,
        @Shanim Int,
        @Hodesh Decimal(20,10);
Select    @Molad='19000924 05:00:30',
        @Shana=5661,
        @Shanim=200,
        @Hodesh=29+12./24+793./1080./24;

With Yamim As
(Select 1 Yom
Union All
Select    Yom+1
From    Yamim
Where    Yom<30),
Hodashim As
(Select 1 ID, 'תשרי' Hodesh,30 Yamim, Null Sug Union All
Select 2 ID, 'חשוון' Hodesh,29 Yamim, Null Sug Union All
Select 2 ID, 'חשוון' Hodesh,30 Yamim, 'מלא' Sug Union All
Select 3 ID, 'כסלו' Hodesh,30 Yamim, Null Sug Union All
Select 3 ID, 'כסלו' Hodesh,29 Yamim, 'חסר' Sug Union All
Select 4 ID, 'טבת' Hodesh,29 Yamim, Null Sug Union All
Select 5 ID, 'שבט' Hodesh,30 Yamim, Null Sug Union All
Select 6 ID, 'אדר' Hodesh,29 Yamim, Null Sug Union All
Select 6 ID, 'אדר א' Hodesh,30 Yamim, Null Sug Union All
Select 6 ID, 'אדר ב' Hodesh,29 Yamim, Null Sug Union All
Select 7 ID, 'ניסן' Hodesh,30 Yamim, Null Sug Union All
Select 8 ID, 'אייר' Hodesh,29 Yamim, Null Sug Union All
Select 9 ID, 'סיוון' Hodesh,30 Yamim, Null Sug Union All
Select 10 ID, 'תמוז' Hodesh,29 Yamim, Null Sug Union All
Select 11 ID, 'אב' Hodesh,30 Yamim, Null Sug Union All
Select 12 ID, 'אלול' Hodesh,29 Yamim, Null Sug),
Shanim As
(Select Shana,
        Meuberet,
        Molad,
        Yom,
        MeuberetKodemet,
        Cast(Null As DateTime) RoshHashanaHakodemet,
        Dhia1,
        Dhia2,
        Dhia3,
        Case When DatePart(WeekDay,RoshHashana) In (1,4,6) Then 1 Else 0 End Dhia4,
        RoshHashana+Case When DatePart(WeekDay,RoshHashana) In (1,4,6) Then 1 Else 0 End RoshHashana
From    (Select    *,
                Cast(DateDiff(Day,0,Molad) As DateTime)+Case When 1 In (Dhia1,Dhia2,Dhia3) Then 1 Else 0 End RoshHashana
        From    (Select    *,
                        Case When Molad-Cast(DateDiff(Day,0,Molad) As DateTime)>(12./24) Then 1 Else 0 End Dhia1,--מולד זקן
                        Case When Yom=3 And Molad-Cast(DateDiff(Day,0,Molad) As DateTime)>(3.+204./1080)/24 And Meuberet=0 Then 1 Else 0 End Dhia2,--ג' ט' ר"ד בשנה פשוטה
                        Case When Yom=2 And Molad-Cast(DateDiff(Day,0,Molad) As DateTime)>(9.+589./1080)/24 And MeuberetKodemet=1 Then 1 Else 0 End Dhia3 --ב' ט"ו תקפ"ט בפשוטה שאחרי מעוברת
                From    (Select    @Shana Shana,
                                Case When @Shana%19 In (3,6,8,11,14,17,0) Then 1
                                    Else 0
                                    End Meuberet,
                                @Molad Molad,
                                DatePart(Weekday,@Molad) Yom,
                                Case When (@Shana-1)%19 In (3,6,8,11,14,17,0) Then 1
                                    Else 0
                                    End MeuberetKodemet) T) T) T
Union All
Select    Shana,
        Meuberet,
        Molad,
        Yom,
        MeuberetKodemet,
        RoshHashanaHakodemet,
        Dhia1,
        Dhia2,
        Dhia3,
        Case When DatePart(WeekDay,RoshHashana) In (1,4,6) Then 1 Else 0 End Dhia4,
        RoshHashana+Case When DatePart(WeekDay,RoshHashana) In (1,4,6) Then 1 Else 0 End RoshHashana
From    (Select    *,
                Cast(DateDiff(Day,0,Molad) As DateTime)+Case When 1 In (Dhia1,Dhia2,Dhia3) Then 1 Else 0 End RoshHashana
        From    (Select    *,
                        Case When Molad-Cast(DateDiff(Day,0,Molad) As DateTime)>(12./24) Then 1 Else 0 End Dhia1,--מולד זקן
                        Case When Yom=3 And Molad-Cast(DateDiff(Day,0,Molad) As DateTime)>(3.+204./1080)/24 And Meuberet=0 Then 1 Else 0 End Dhia2,--ג' ט' ר"ד בשנה פשוטה
                        Case When Yom=2 And Molad-Cast(DateDiff(Day,0,Molad) As DateTime)>(9.+589./1080)/24 And MeuberetKodemet=1 Then 1 Else 0 End Dhia3 --ב' ט"ו תקפ"ט בפשוטה שאחרי מעוברת
                From    (Select    *,
                                Case When Shana%19 In (3,6,8,11,14,17,0) Then 1
                                    Else 0
                                    End Meuberet,
                                DatePart(Weekday,Molad) Yom
                        From    (Select    Shana+1 Shana,
                                        Molad+Cast(12+Meuberet As Decimal(20,10))*@Hodesh Molad,
                                        Meuberet MeuberetKodemet,
                                        RoshHashana RoshHashanaHakodemet
                                From    Shanim) T
                        Where    Shana<@Shana+@Shanim) T) T) T),
Moadim As
(Select    'ראש השנה' [Moed],'תשרי' [ShemHodesh],1 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ראש השנה' [Moed],'תשרי' [ShemHodesh],2 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'צום גדליה' [Moed],'תשרי' [ShemHodesh],3 [Yom], 0 [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'צום גדליה' [Moed],'תשרי' [ShemHodesh],4 [Yom], 1 [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום כיפור' [Moed],'תשרי' [ShemHodesh],10 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'סוכות' [Moed],'תשרי' [ShemHodesh],15 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'א חול המועד סוכות' [Moed],'תשרי' [ShemHodesh],16 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ב חול המועד סוכות' [Moed],'תשרי' [ShemHodesh],17 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ג חול המועד סוכות' [Moed],'תשרי' [ShemHodesh],18 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ד חול המועד סוכות' [Moed],'תשרי' [ShemHodesh],19 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
elect    'ה חול המועד סוכות' [Moed],'תשרי' [ShemHodesh],20 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'הושענא רבא' [Moed],'תשרי' [ShemHodesh],21 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'שמיני עצרת, שמחת תורה' [Moed],'תשרי' [ShemHodesh],22 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'א חנוכה' [Moed],'כסלו' [ShemHodesh],25 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ב חנוכה' [Moed],'כסלו' [ShemHodesh],26 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ג חנוכה' [Moed],'כסלו' [ShemHodesh],27 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ד חנוכה' [Moed],'כסלו' [ShemHodesh],28 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ה חנוכה' [Moed],'כסלו' [ShemHodesh],29 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ו חנוכה' [Moed],'טבת' [ShemHodesh],1 [Yom], Null [ZomGedalya], 3 [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ז חנוכה' [Moed],'טבת' [ShemHodesh],2 [Yom], Null [ZomGedalya], 3 [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ח חנוכה' [Moed],'טבת' [ShemHodesh],3 [Yom], Null [ZomGedalya], 3 [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ו חנוכה' [Moed],'כסלו' [ShemHodesh],30 [Yom], Null [ZomGedalya], 0 [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ז חנוכה' [Moed],'טבת' [ShemHodesh],1 [Yom], Null [ZomGedalya], 0 [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ח חנוכה' [Moed],'טבת' [ShemHodesh],2 [Yom], Null [ZomGedalya], 0 [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'י בטבת' [Moed],'טבת' [ShemHodesh],10 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ט"ו בשבט' [Moed],'שבט' [ShemHodesh],15 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'תענית אסתר' [Moed],'אדר' [ShemHodesh],11 [Yom], Null [ZomGedalya], Null [Hanuca], 5 [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'תענית אסתר' [Moed],'אדר' [ShemHodesh],13 [Yom], Null [ZomGedalya], Null [Hanuca], 0 [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'פורים' [Moed],'אדר' [ShemHodesh],14 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'שושן פורים' [Moed],'אדר' [ShemHodesh],15 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'פורים משולש' [Moed],'אדר' [ShemHodesh],16 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], 1 [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'תענית אסתר' [Moed],'אדר ב' [ShemHodesh],11 [Yom], Null [ZomGedalya], Null [Hanuca], 5 [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'תענית אסתר' [Moed],'אדר ב' [ShemHodesh],13 [Yom], Null [ZomGedalya], Null [Hanuca], 0 [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'פורים' [Moed],'אדר ב' [ShemHodesh],14 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'שושן פורים' [Moed],'אדר ב' [ShemHodesh],15 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'פורים משולש' [Moed],'אדר ב' [ShemHodesh],16 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], 1 [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'פסח' [Moed],'ניסן' [ShemHodesh],15 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'א חול המועד פסח' [Moed],'ניסן' [ShemHodesh],16 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ב חול המועד פסח' [Moed],'ניסן' [ShemHodesh],17 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ג חול המועד פסח' [Moed],'ניסן' [ShemHodesh],18 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ד חול המועד פסח' [Moed],'ניסן' [ShemHodesh],19 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'ה חול המועד פסח' [Moed],'ניסן' [ShemHodesh],20 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'שביעי של פסח' [Moed],'ניסן' [ShemHodesh],21 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לשואה ולגבורה' [Moed],'ניסן' [ShemHodesh],27 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], 0 [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לשואה ולגבורה' [Moed],'ניסן' [ShemHodesh],26 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], 5 [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לשואה ולגבורה' [Moed],'ניסן' [ShemHodesh],28 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], 2 [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לחללי צהל' [Moed],'אייר' [ShemHodesh],4 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], 0 [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לחללי צהל' [Moed],'אייר' [ShemHodesh],2 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], 4 [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לחללי צהל' [Moed],'אייר' [ShemHodesh],3 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], 4 [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום הזכרון לחללי צהל' [Moed],'אייר' [ShemHodesh],5 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], 2 [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום העצמאות' [Moed],'אייר' [ShemHodesh],5 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], 0 [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום העצמאות' [Moed],'אייר' [ShemHodesh],3 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], 5 [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום העצמאות' [Moed],'אייר' [ShemHodesh],4 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], 5 [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום העצמאות' [Moed],'אייר' [ShemHodesh],6 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], 3 [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'לג בעומר' [Moed],'אייר' [ShemHodesh],18 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יום ירושלים' [Moed],'אייר' [ShemHodesh],28 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'שבועות' [Moed],'סיוון' [ShemHodesh],6 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], Null [TishaBeav] Union All
Select    'יז בתמוז' [Moed],'תמוז' [ShemHodesh],17 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], 0 [17Tamuz], Null [TishaBeav] Union All
Select    'יז בתמוז' [Moed],'תמוז' [ShemHodesh],18 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], 1 [17Tamuz], Null [TishaBeav] Union All
Select    'תשעה באב' [Moed],'אב' [ShemHodesh],9 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], 0 [TishaBeav] Union All
Select    'תשעה באב' [Moed],'אב' [ShemHodesh],10 [Yom], Null [ZomGedalya], Null [Hanuca], Null [TaanitEster], Null [PurimMeshulash], Null [YomHashoa], Null [YomHazikaron], Null [YomHaatzmaut], Null [17Tamuz], 1 [TishaBeav])
Select    M.Moed,
        T.Taarih,
        T.YomBashavua,
        T.Shana ShanaIvrit,
        T.ShemHodesh,
        T.Yom
From    (Select S.RoshHashanaHakodemet,
                H.ID,
                DateAdd(Day,Row_Number() Over(Partition By S.Shana Order By H.ID,H.Hodesh,Y.Yom)-1,S.RoshHashanaHakodemet) Taarih,
                DatePart(WeekDay,DateAdd(Day,Row_Number() Over(Partition By S.Shana Order By H.ID,H.Hodesh,Y.Yom)-1,S.RoshHashanaHakodemet)) YomBashavua,
                S.RoshHashana,
                S.Shana-1 Shana,
                H.Hodesh ShemHodesh,
                H.Sug SugHodesh,
                Y.Yom,
                DateDiff(Day,RoshHashanaHakodemet,RoshHashana) Hefresh
        From    Shanim S
        Inner Join Hodashim H
                On ((S.MeuberetKodemet=0 And H.Hodesh Not In ('אדר א','אדר ב'))
                        Or (S.MeuberetKodemet=1 And H.Hodesh Not In ('אדר')))
                    And ((DateDiff(Day,S.RoshHashanaHakodemet,S.RoshHashana)%10=3
                            And (H.Hodesh<>'חשוון' Or H.Sug Is Null)
                            And (H.Hodesh<>'כסלו' Or H.Sug='חסר'))
                        Or (DateDiff(Day,S.RoshHashanaHakodemet,S.RoshHashana)%10=4
                            And H.Sug Is Null)
                        Or (DateDiff(Day,S.RoshHashanaHakodemet,S.RoshHashana)%10=5
                            And (H.Hodesh<>'חשוון' Or H.Sug='מלא')
                            And (H.Hodesh<>'כסלו' Or H.Sug Is Null)))
        Inner Join Yamim Y
                On H.Yamim>=Y.Yom) T
Left Join Moadim M
        On T.ShemHodesh=M.ShemHodesh
        And T.Yom=M.Yom
        And (M.ZomGedalya Is Null
            Or (M.ZomGedalya=0 And T.YomBashavua<>7)
            Or (M.ZomGedalya=1 And T.YomBashavua=1))
        And (M.Hanuca Is Null
            Or (M.Hanuca=0 And DateDiff(Day,RoshHashanaHakodemet,RoshHashana)%10<>3)
            Or (M.Hanuca=5 And DateDiff(Day,RoshHashanaHakodemet,RoshHashana)%10=3))
        And (M.TaanitEster Is Null
            Or (M.TaanitEster=0 And T.YomBashavua<>7)
            Or (M.TaanitEster=5 And T.YomBashavua=5))
        And (M.PurimMeshulash Is Null
            Or (M.PurimMeshulash=1 And T.YomBashavua=1))
        And (M.YomHashoa Is Null
            Or (T.Shana>=5719 And M.YomHashoa=0 And T.YomBashavua Between 2 And 5)
            Or (T.Shana Between 5719 And 5757 And M.YomHashoa=0 And T.YomBashavua=1)
            Or (T.Shana>=5757 And M.YomHashoa=2 And T.YomBashavua=2)
            Or (T.Shana>=5719 And M.YomHashoa=5 And T.YomBashavua=5))
        And (M.YomHazikaron Is Null
            Or (T.Shana>=5709 And M.YomHazikaron=0 And T.YomBashavua Between 2 And 4)
            Or (T.Shana Between 5709 And 5763 And M.YomHazikaron=0 And T.YomBashavua=1)
            Or (T.Shana>=5764 And M.YomHazikaron=2 And T.YomBashavua=2)
            Or (T.Shana>=5709 And M.YomHazikaron=4 And T.YomBashavua=4))
        And (M.YomHaatzmaut Is Null
            Or (T.Shana>=5709 And M.YomHaatzmaut=0 And T.YomBashavua Between 3 And 5)
            Or (T.Shana Between 5709 And 5763 And M.YomHaatzmaut=0 And T.YomBashavua=2)
            Or (T.Shana>=5764 And M.YomHaatzmaut=3 And T.YomBashavua=3)
            Or (T.Shana>=5709 And M.YomHaatzmaut=5 And T.YomBashavua=5))
        And (M.Moed<>'יום ירושלים'
            Or T.Shana>=5728)
        And (M.[17Tamuz] Is Null
            Or (M.[17Tamuz]=0 And T.YomBashavua<>7)
            Or (M.[17Tamuz]=1 And T.YomBashavua=1))
        And (M.TishaBeav Is Null
            Or (M.TishaBeav=0 And T.YomBashavua<>7)
            Or (M.TishaBeav=1 And T.YomBashavua=1))
Where   RoshHashanaHakodemet Is Not Null
        And M.Moed Is Not Null
Order By T.Taarih
Option (MaxRecursion 0);
Go

image

מודעות פרסומת

3 תגובות »

  1. אני חדש בתחום
    אך נראה לי שיהיה מאד שימושי
    ליצור מזה UDF – ים
    למשל
    ששולחים את החג המבוקש ואת השנה המבוקשת
    ומקבלים באיזה יום/ימים יחול
    אני מאמין שהותיקים בתחום יכולים לעשות זאת בעצמם
    אבל מתחילים כמוני….

    תגובה של אלי כהן — 19/11/2011 @ 23:00

    • עם קצת מאמץ הכל אפשרי:
      לפני הקוד מוסיפים את ההגדרות וההצהרות של הפונקציה:
      CREATE FUNCTION dbo.F_Hagim() –Select * From dbo.F_Hagim()
      RETURNS @T_Hagim TABLE(Moed Varchar(30),
      Taarih DateTime,
      YomBeshavua TinyInt,
      ShanaIvrit SmallInt,
      ShemHodesh Varchar(10),
      Yom TinyInt)
      AS

      Begin
      בסוף הקוד מוסיפים
      Return
      End
      Go
      ובאמצע הקוד, לפני Select M.Moed, מוסיפים
      Insert Into @T_Hagim
      כל זה בלי פרמטרים לקבלת שליפה פשוטה שניתן להוסיף לה תנאים.
      בהצלחה.

      תגובה של גרי רשף — 20/11/2011 @ 07:40

  2. יפה מאוד!

    תגובה של פלג — 17/10/2011 @ 16:10


RSS feed for comments on this post. TrackBack URI

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

בלוג בוורדפרס.קום.

%d בלוגרים אהבו את זה: