הפקת שאילתת SQL

פורומים אפיון ופיתוח פריוריטי הפקת שאילתת SQL

  • Post
    YANIV MADMONI
    משתתף
    none
    שלום ,

    הפקתי שאילתת SQL מדוח ORDDELAY , כל הנתונים יצאו טובים מלבד שדה תאריך .

    במקום תאריך מופיע לי מספר משונה לדוגמא 11626560

    בדקתי שהשדה התאריך הינו מסוג DATE

    האם ישנה דרך לפתור את הנושא הנ"ל ?

    תודה מראש
    יניב

מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • Replies
    אם אתה מבקש לקבל בדו"ח את התאריך בפורמט הסטנדרטי DD/MM/YY, אז יש לשנות במחולל את הנתונים הבאים עבור עמודה ORDERITEMS.DUEDATE :

    רוחב = 8
    איפיון הצגה = 0

    אלון.

    YANIV MADMONI
    משתתף
    none
    היי ,

    בדוח של פריוריטי הכל תקין .

    אני מתכוון שאת השאילתה ביצעתי באמצעות הפריוריטי ואת השאילתה אני מושך לאקסל באמצעות microsoft query ושם מופיע לי מספרים במקום תאריכים .

    האם ישנו פתרון לכך ?

    יניב

    PriorityDev
    משתתף
    IL
    התאריכים בפריוריטי מאוחסנים בתור מספרים המציגים מספר דקות מאז 01.01.88
    קיימות פונקציות מוכנות להמרה, או לחילופין, אתה יכול לכתוב פונקציה משלך בכלי החיצוני שאתה משתמש.
    PriorityDev
    משתתף
    IL
    אם את השאילתא אתה מבצע בפריוריטי, אתה יכול לאחסן את זה בתוך CHAR ע"י פונקצית DTOA (ראה סינטקס ב-SDK)
    shery
    משתתף
    באקסל תעשה קליק ימני על העמודה ואז לחץ על עיצוב תאים ואז "מותאם אישית ותמצא שם ברשימהdd/mm/yy
    ואז יוצג תאריך כמו שצריך
    אני לא בטוח שההמרה באמצעות האקסל יעבוד כאן.
    המספר שהתקבל מהפריוריטי כדוגמת 11626560, הינו מספר הדקות מאז ינואר 1988 (ראו תגובתו של מיכאל).
    באקסל, הספירה מתחילה החל משנת 1900 לפי ימים ולא בדקות כמו בפריוריטי.
    לדוגמא, התאריך של היום 1/7/2010 באקסל מוכר כמספר 40360

    אלון.

    YANIV MADMONI
    משתתף
    none
    שלום ,

    אכן המרה מאקסל לא הפתרון .

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

    dateadd(minute,XXX.dbo.CUSTOMERS.CREATEDDATE,'1988/01/01'),

    יניב

    yitzchok
    משתתף
    IL
    יניב
    אני לא רואה את הפתרון שלך משום מה
    בכל מקרה, לטובת מי שיעלה על הדיון הזה בעתיד אני יכול לבקש שתאשר את המסקנה שלי שה-sql שהזכרת זה sql של sql server ולא sql של פריוריטי שהרצת דרך דרייבר ה-odbc של פריוריטי (Tabula Driver)
    אם כן אסביר לקוראים שהסיבה שקיבלת מספרים זה בגלל שכך פריוריטי שומר תאריכים. אפשר לראות אותם ערכים מתוך פריוריטי ע"י שליפת שדה תאריך בצורת "אפס פלום שם שדה". קיימת פונקציה שמוזכרת ב-SDK שהופכת מספר כזה לתאריך SQL (דהיינו ערך מסוג תאריך). בפועל אפשר לעלות על החישוב ברלוונטי לבד ללא צורך בפונקציה שלהם, אין שם קסם. הצעות להמיר לטקסט פחות מתאימות כי אי אפשר לעבד "תאריכים" כאלה.
    ה-tabula driver יודע להחזיר שדות תאריך של פריוריטי בתור שדה שמוכר ל-odbc כתאריך, אין צורך בהמרה, זאת המטרה של הדרייבר.
    בברכה
    יצחק
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    YANIV MADMONI
    משתתף
    none
    הSQL המדובר הוא אכן SQL SERVER.

    יניב

    ALON
    משתתף
    למען הסדר הטוב זאת השאילתא אשר ממירה את המספרים לתאריכים

    declare @dt DATETIME = '01-01-88' — epoch start
    SELECT colum AS Pos_udate,
    ,DATEADD(MINUTE, colum ,@dt) AS ActualPos_udateTime
    FROM table name

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