תאריך בעברית ב SQL SERVER

קדם Forums הייטק Database Design & Development תאריך בעברית ב SQL SERVER

Tagged: 

  • צפורה

    חברה
    חברה
    01/05/2023 ב10:11 pm

    קראתי על זה קצת,

    לכאורה הדרך הקלה ביותר היא למפות את המידע שלך לטבלה.

    כלומר- תעשי טבלה עם כל התאריכים הרלוונטיים + מה התאריך הלועזי של אותו תאריך,

    (כמה שנים קדימה, כמה שיותר – יותר טוב)

    ותבדקי בקוד שלך אם התאריך נמצא בטבלה הזו.

    יהיה מעניין לשמוע אם תמצאי רעיון טוב יותר!

    בהצלחה!

  • טליה שוורץ

    מנהלת קדם
    מנהלת
    01/05/2023 ב11:25 pm
    36

    ציפי כן, את יכולה לקבוע את התאריך העברי ב-SQL באמצעות פונקציות לוח שנה בעברית שזמינות בחלק ממערכות ניהול מסדי הנתונים של SQL. לדוגמה, ל-Microsoft SQL Server יש פונקציה מובנית בשם “Hebrew_DateFromParts” שלוקחת את השנה, החודש והיום כפרמטרים ומחזירה את התאריך העברי המתאים. משאירה לך שאילתה לדוגמה המשתמשת בפונקציה הזו:

    SELECT dbo.Hebrew_DateFromParts(5783, 7, 29) as HebrewDate;

  • טליה שוורץ

    מנהלת קדם
    מנהלת
    01/05/2023 ב11:28 pm
    36

    ארחיב עוד קצת, השאילתה מחזירה את התאריך העברי עבור התאריך הגרגוריאני של 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
  • טליה שוורץ

    מנהלת קדם
    מנהלת
    01/05/2023 ב11:28 pm
    36

    בדוגמה האחרונה, השאילתה פשוט בודקת אם התאריך של היום נמצא בטבלת “חגים”, ואם כן, היא לא עושה כלום. אחרת, זה מפעיל את JOB.

    מקווה שעזרתי, בהצלחה!

    • צפורה ק.א.

      הייטק
      חברה
      02/05/2023 ב10:27 am

      תודה רבה על כל התגובות.

      ניסיתי לבדוק את הפונקציה הזו:Hebrew_DateFromParts אך הוא לא מכיר אותה , אני משתמשת ב SSMS 2018

      גם באינטרנט לא מצאתי איזכור לזה – אולי תשלחי לי לינק איפה ראית את זה?

      האפשרות היא אכן למפות את המידע כמה שנים קדימה…

      או לעבור דרך אפליקצית NET – שם יש להם קלאס שמטפל בתאריכים עבריים – ולהפעיל את הפרוצדורה דרך שם ולא דרך ג’וב ב SQL.

      אם מישהי יודעת עוד משהו , אשמח לשמוע.

  • טליה שוורץ

    מנהלת קדם
    מנהלת
    02/05/2023 ב10:49 am
    36

    לדעתי אל תמפי כמה שנים קדימה זה סיוט ולא כ”כ הגיוני לעבוד ככה..

    הנה דוגמא למימוש של הפונקציה הזו להמרת תאריכים גרגוריאניים לתאריכים עבריים עם 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}"; } } }


  • רחל רוטנברג

    חברה
    חברה
    02/05/2023 ב10:55 am
  • טליה שוורץ

    מנהלת קדם
    מנהלת
    02/05/2023 ב10:56 am
    36

    המשך:

    תצרי קובץ 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.

מעוניינת בפרסום

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

ניתן לפנות גם במייל ל: [email protected]

מה את מחפשת?

מילות מפתח פופולריות לפי תחומים

ניתן לחפש גם מילות מפתח , תפקידים וכישרון מיוחד שאינם מופיעים ברשימות - "נהגת", "ציור בחול" וכדומה.

דילוג לתוכן