
תאריך בעברית ב SQL SERVER
קדם ‹ Forums ‹ הייטק ‹ Database Design & Development ‹ תאריך בעברית ב SQL SERVER
Tagged: תאריך
תאריך בעברית ב SQL SERVER
פורסם ע"י צפורה ק.א. הייטק on 01/05/2023 ב2:24 pmשלום,
האם יש לי דרך לדעת את התאריך העברי בתוך SQL?
אני רוצה לבנות ג'וב קבוע שלא ירוץ בחגים – יש דרך למצוא את זה?
תודה
טליה שוורץ הגיבה לפני 2 שנים, 8 חודשים 4 חברות · 8 תגובות- 8 תגובות
חברה חדשה קראתי על זה קצת,
לכאורה הדרך הקלה ביותר היא למפות את המידע שלך לטבלה.
כלומר- תעשי טבלה עם כל התאריכים הרלוונטיים + מה התאריך הלועזי של אותו תאריך,
(כמה שנים קדימה, כמה שיותר – יותר טוב)
ותבדקי בקוד שלך אם התאריך נמצא בטבלה הזו.
יהיה מעניין לשמוע אם תמצאי רעיון טוב יותר!
בהצלחה!
- סטטוס תעסוקתי:
מנהלת קהילה ציפי כן, את יכולה לקבוע את התאריך העברי ב-SQL באמצעות פונקציות לוח שנה בעברית שזמינות בחלק ממערכות ניהול מסדי הנתונים של SQL. לדוגמה, ל-Microsoft SQL Server יש פונקציה מובנית בשם "Hebrew_DateFromParts" שלוקחת את השנה, החודש והיום כפרמטרים ומחזירה את התאריך העברי המתאים. משאירה לך שאילתה לדוגמה המשתמשת בפונקציה הזו:
SELECT dbo.Hebrew_DateFromParts(5783, 7, 29) as HebrewDate;
- סטטוס תעסוקתי:
מנהלת קהילה ארחיב עוד קצת, השאילתה מחזירה את התאריך העברי עבור התאריך הגרגוריאני של 28 בספטמבר 2022.
לגבי השאלה השנייה שלך, את יכולה ליצור עבודה מתוזמנת ב-SQL Server שפועלת בימים ספציפיים בשבוע או בחודש על ידי הגדרת לוח זמנים באמצעות ה-SQL Server Agent.
ואז תוכלי לבצע אי הכללה (אסקלוד) של חגים מלוח הזמנים על ידי יצירת טבלה (קצרה! שפשוט אומרת לדוגמא י' בתשרי – יום כיפור וכו'. ) טבלה שפשוט מפרטת את כל החגים ולאחר מכן לשנות את לוח הזמנים של הJOB כדי לדלג על התאריכים האלו . את יכולה להשתמש בשאילתת SQL פשוטה כדי לבדוק אם התאריך הנוכחי הוא חג, ואם כן, לדלג על העבודה. לדוגמה:
IF EXISTS(SELECT 1 FROM holidays WHERE holiday_date = CONVERT(date, GETDATE())) BEGIN -- do nothing, it's a holiday END ELSE BEGIN -- run the job END - סטטוס תעסוקתי:
מנהלת קהילה בדוגמה האחרונה, השאילתה פשוט בודקת אם התאריך של היום נמצא בטבלת "חגים", ואם כן, היא לא עושה כלום. אחרת, זה מפעיל את JOB.
מקווה שעזרתי, בהצלחה!
חברה חדשה תודה רבה על כל התגובות.
ניסיתי לבדוק את הפונקציה הזו:Hebrew_DateFromParts אך הוא לא מכיר אותה , אני משתמשת ב SSMS 2018
גם באינטרנט לא מצאתי איזכור לזה – אולי תשלחי לי לינק איפה ראית את זה?
האפשרות היא אכן למפות את המידע כמה שנים קדימה…
או לעבור דרך אפליקצית NET – שם יש להם קלאס שמטפל בתאריכים עבריים – ולהפעיל את הפרוצדורה דרך שם ולא דרך ג'וב ב SQL.
אם מישהי יודעת עוד משהו , אשמח לשמוע.
- סטטוס תעסוקתי:
מנהלת קהילה לדעתי אל תמפי כמה שנים קדימה זה סיוט ולא כ"כ הגיוני לעבוד ככה..
הנה דוגמא למימוש של הפונקציה הזו להמרת תאריכים גרגוריאניים לתאריכים עבריים עם System.Globalization.HebrewCalendar של .NET. :
using System.Globalization; namespace HebrewDateConverter { public static class HebrewDateConverter { public static string ConvertToHebrewDate(DateTime gregorianDate) { HebrewCalendar hebrewCalendar = new HebrewCalendar(); int hebrewYear = hebrewCalendar.GetYear(gregorianDate); int hebrewMonth = hebrewCalendar.GetMonth(gregorianDate); int hebrewDay = hebrewCalendar.GetDayOfMonth(gregorianDate); string hebrewMonthName = hebrewCalendar.GetMonthName(hebrewYear, hebrewMonth); return $"Hebrew Date: {hebrewDay} {hebrewMonthName} {hebrewYear}"; } } }
- סטטוס תעסוקתי:
מנהלת קהילה המשך:
תצרי קובץ DLL. בSQL, צרי UDF של SQL Server המפנה לקובץ ה-DLL:
CREATE ASSEMBLY HebrewDateConverterFROM 'C:\path\to\HebrewDateConverter.dll'WITH PERMISSION_SET = UNSAFE;CREATE FUNCTION dbo.ConvertToHebrewDate(@gregorianDate DATETIME)RETURNS NVARCHAR(50)AS EXTERNAL NAME HebrewDateConverter.[HebrewDateConverter.HebrewDateConverter].ConvertToHebrewDate;שימי לב להחליף את C:\path\to\HebrewDateConverter.dll בנתיב האמיתי לקובץ ה-DLL שלך.
תשתמשי ב-UDF בשאילתת SQL כדי להמיר תאריך גרגוריאני לתאריך עברי:
SELECT dbo.ConvertToHebrewDate('2023-05-02') AS HebrewDate;השאילתה תחזיר לך התאריך העברי עבור התאריך הגרגוריאני של 2 במאי 2023:
לדוגמא:
Hebrew Date: 29 Nisan 5783
Log in to reply.
