-
@איש-נחמד אין פונקציה מובנית לחישוב תאריך עברי.
אתה צריך לחשב בעצמך את החודש העברי, ולשמור אותו בשדה נפרד ברשומה. ואז תוכל לבצע שאילתת קיבוץ עליו.
לא צינת את השפה בה אתה משתמש, אבל יש ספריות בשביל זה.
אם התאריך סטטי (השדה לא נתון לשינויים), תחשב את מספר החודש העברי (על ידי קוד כנ"ל) בזמן יצירת הרשומה, ואם הוא נתון לשינויים - תחשב אותו בזמן עדכון שדה התאריך הלועזי. -
-
להלן קוד linqpad שמייצר רשימה כזו (בחמישית השניה במחשב שלי)
var HebrewCulture = System.Globalization.CultureInfo.CreateSpecificCulture("he-IL"); HebrewCulture.DateTimeFormat.Calendar = new System.Globalization.HebrewCalendar(); var startDate = new DateTime(2000,01,01); var listDays = Enumerable.Range(0, 50_000).Select(e => startDate.AddDays(e)); var rows = listDays.Select(d => new { GDate = d, HebDate = d.ToString("d", HebrewCulture), HebMonth = d.ToString("MMMM", HebrewCulture), HebYear = d.ToString("yyyy", HebrewCulture), HebYearInt = HebrewCulture.DateTimeFormat.Calendar.GetYear(d), HebMonthInt = HebrewCulture.DateTimeFormat.Calendar.GetMonth(d) }); Util.WriteCsv(rows, @"D:\allDates.csv");
זה בין השנים 2000-2136
עריכה: צירפתי את הקובץ לשימוש מי שרוצה
allDates.zip -
@dovid אמר בSQL - GROUP BY HEBREW MONTH ?:
עוד אפשרות שאני זוכר שממליצים זה טבלה סטטית עם רשימת ימים.
מדובר באלפי שורות בודדים, ואז בהנחה שיש לך שדה תאריך ללא שעה זה JOIN פשוט.זה אני המלצתי בזמנו ונראה לי שהעלתי לפורום בצורה כזו או אחרת את הטבלה ב SQL SERVER אם זה רלוונטי אעלה אולי שוב (לא מבטיח כלום לאף אחד כבר שנים).
-
@dovid אמר בSQL - GROUP BY HEBREW MONTH ?:
עוד אפשרות שאני זוכר שממליצים זה טבלה סטטית עם רשימת ימים.
מדובר באלפי שורות בודדים, ואז בהנחה שיש לך שדה תאריך ללא שעה זה JOIN פשוט.זה אומר שאני צריך להחזיק טבלה שתחזיק את כל הימים מכאן ועד סוף חיי היישום?
אגב, זה לא תואם לשיטת הספירה של PHP, לפיה כל שנה נספרת עם 13 חודשים כדי לשמור על מספר חודש קבוע בכל שנה (אלול תמיד יהיה 13). -
@איש-נחמד הטבלה שצירפתי מתאימה לכל חיי היישום שלך ( אלא"כ הוא עוסק בהיסטוריה כמו המהפכה הצרפתית).
זה לא משנה הPHP פה (ולא שהבנתי למה זה לא מתאים) כי זה JOIN ברמת הSQL. אתה מוסיף את זה כטבלה ואתה מחבר את זה בשאילתה הרצויה ולפי זה עושה GROUP BY. -
@dovid אמר בSQL - GROUP BY HEBREW MONTH ?:
זה לא משנה הPHP פה (ולא שהבנתי למה זה לא מתאים) כי זה JOIN ברמת הSQL. אתה מוסיף את זה כטבלה ואתה מחבר את זה בשאילתה הרצויה ולפי זה עושה GROUP BY.
ראה כאן:
https://www.php.net/manual/en/function.jdtojewish.php#:~:text=In Hebrew leap years%2C theההערה שלי באה על כך שהצמדת לחודשים ניסן - אלול בשנים לא מעוברות את הספירה 7 - 12, בעוד שב- PHP הם תמיד יהיו 8 - 13.
-
@dovid אמר בSQL - GROUP BY HEBREW MONTH ?:
@איש-נחמד אמר בSQL - GROUP BY HEBREW MONTH ?:
ההערה שלי באה על כך שהצמדת לחודשים ניסן - אלול בשנים לא מעוברות את הספירה 7 - 12, בעוד שב- PHP הם תמיד יהיו 8 - 13.
לא מבין מה אכפת לך איך PHP ממספר, צריך להיות אכפת לך מה אתה מעוניין.
כנראה לא הובן מדברי (?), אבל אני עובד עם PHP (רח"ל) באתר מבוסס וורדפרס (חטא שני), ומשכך אני נצרך לעבוד עם נתונים שתואמים ל-PHP. אם אני אבקש מ-PHP את החודש ה-12 של 5782 הוא יתן לי את חודש אב ולא את חודש אלול.
-