פונקציה שתציג לי תאריך שנה קדימה

פורומים אפיון ופיתוח פריוריטי פונקציה שתציג לי תאריך שנה קדימה

  • Post
    רועי
    משתתף
    יש לי בדוח שדה תאריך ואני רוצה שהוא יציג תאריך בדיוק שנה קדימה. יש נוסחה שיכולה לעשות זאת?
    לחילופין, יש נוסחה שמזינים לה שנה, חודש, יום והיא יוצרת שדה מסוג תאריך?
מוצגות 15 תגובות – 1 עד 15 (מתוך 15 סה״כ)
  • Replies
    PriorityDev
    משתתף
    IL
    ראה דוגמא:
    [code:1]ORDERITEMS.REQDATE + 365 * 24:00[/code:1]
    yitzchok
    משתתף
    IL
    michaelm כתב:

    ראה דוגמא:
    [code:1]ORDERITEMS.REQDATE + 365 * 24:00[/code:1]

    תשובה זו לא לוקחת בחשבון שנת עיבור
    365 ימים לאחר 2 ביוני 2011 יהיה 1 ביוני 2012

    אם לא אכפת לך מצב כזה אין בעיה

    יש פונקציות שיעזרו בדבר זה (ראה מסמך הSDK!)

    דוגמה שלי. קוד זה מטפל בשנות עיבור. אפשר להקטין (נראה לי) לביטוי אחד אבל לא הוכחתי.

    [code:1]
    :MYDATE = 05/06/2008 ;
    :NEWDATETEXT = " ;
    SELECT DTOA(:MYDATE,'DD/MM') INTO :NEWDATETEXT FROM DUMMY ;
    SELECT '01/03' INTO :NEWDATETEXT FROM DUMMY WHERE :NEWDATETEXT = '29/02' ;
    SELECT STRCAT(:NEWDATETEXT,'/',ITOA(YEAR(:MYDATE)+1)) INTO :NEWDATETEXT FROM DUMMY ;
    SELECT ATOD(:NEWDATETEXT,'DD/MM/YYYY') FROM DUMMY FORMAT ;
    [/code:1]

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    תיקון!

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

    [code:1]
    :MYDATE = 29/02/2008 ;
    :NEWDATETEXT = " ;
    SELECT DTOA(:MYDATE,'DD/MM') INTO :NEWDATETEXT FROM DUMMY ;
    /* SELECT '01/03' INTO :NEWDATETEXT FROM DUMMY WHERE :NEWDATETEXT = '29/02' ; */
    SELECT STRCAT(:NEWDATETEXT,'/',ITOA(YEAR(:MYDATE)+1)) INTO :NEWDATETEXT FROM DUMMY ;

    SELECT ATOD(:NEWDATETEXT,'DD/MM/YYYY') FROM DUMMY FORMAT ;
    [/code:1]

    בתור ביטוי יחיד:

    [code:1]
    :MYDATE = 29/02/2008 ;
    SELECT ATOD(STRCAT(DTOA(:MYDATE,'DD/MM'),'/',ITOA(YEAR(:MYDATE)+1)),'DD/MM/YYYY') FROM DUMMY FORMAT ;
    [/code:1]

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    Lior
    מנהל בפורום
    ניתן להשתמש גם ב AddMonthsToDate – טריגר במסך func שמשמש להוספת מספר חודשים לתאריך נתון.
    דוגמא:

    [code:1]:CURDATE = 01/02/09;
    :MONTHS = 6;
    #include func/AddMonthsToDate[/code:1]

    אחרי ה INCLUDE המשתנה CURDATE מכיל את הערך 01/08/09

    שלום לכולם ומועדים לשמחה
    שמחתי למצוא את הפתרון הזה שמשמש אותי .
    אני צריך גם פתרון שיחשב לי מספר שנים קדימה +11 חודשים .
    כיצד אני יכול לשדרג את הקוד ע"מ שייתן לי מענה לכך?
    (אני משתמש בפתרון של יצחוק ולא בפתרון של ליאור).
    Lior
    מנהל בפורום
    אם תשתמש בפתרון שלי, תוכל להכפיל את מספר השנים ב 12 ולהוסיף לו 11 ולאחסן אותו ב MONTHS. הכי פשוט שיש.
    אבל אני צריך שהחישוב יתבצע בתוך פרוצדורה ולא דרך מסך , האם זה אפשרי?
    Lior
    מנהל בפורום
    הקוד הזה יעבוד גם מתוך פרוצדורה
    אני מנסה בSDK ומקבל שגיאה , כיצד אני אמור לרשום?
    האם ה-INCLUDE הוא חלק מהקוד?
    Lior
    מנהל בפורום
    כן באותיות גדולות
    ניסיתי אותיות קטנות וגדולות וזו השגיאה:
    "C:\tmp/file.in", line 3: Unclosed string
    "C:\tmp/file.in", line 4: parse error at or near symbol INCLUDE FUNC/AddMonthsTODate;
    Lior
    מנהל בפורום
    שם המסך והטריגר לא מדוייקים. תכתוב בדיוק כמו רשמתי לעיל פרט ל INCLUDE שיהיה עם אותיות גדולות וסולמית. כמו כן הטריגר הזה מופיע באינספור מקומות במערכת, אתה יכול לחפש ולהעתיק משם
    אורן קפלן
    משתתף
    היי,
    סליחה שאני מקפיץ דיון כזה ישן, אבל אני עדיין לא מסתדר עם הטריגר – הוא לא מוכן בשום פנים לעבוד, לא בסביבת פיתוח SQL ולא בפרוצדורה שלי – הוא נותן לי את אותה השגיאה שמיכאל קיבל.

    תודה

    אורן

    Lior
    מנהל בפורום
    הי אורן. שים את הקוד שלך בקובץ טקסט. סגור בזיפ והעלה לפורום. אני אעיף בו מבט.
    אורן קפלן
    משתתף
    התגובה שלי מופיעה בהודעה: קוד לחישובי תאריך על עמודה לפי שורות.

    תודה

    אורן

מוצגות 15 תגובות – 1 עד 15 (מתוך 15 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.