הצטרפו לקבוצות שלנו לקבלת עדכונים מרוכזים פעם בשבוע:

ווטסאפ:
http://wa.dwh.co.il
טלגרם:
http://telegram.dwh.co.il

המרת שדה תווי לשדה מסוג תאריך וחישוב הפרש בזמנים

More
14 years 5 months ago #7086 by שי
שלום רב,
יש לי 3 שדות:
1. שדה מסוג תאריך/זמן (המכיל שעה ותאריך)
2. שדה מסוג תווי (המכיל שעה בלבד)
3. שדה מסוג תווי (המכיל תאריך בלבד)

אני מעוניין ליצור חישוב של הפרש הזמן בין השדה המפורט בסעיף 1 ובין הסעיפים 2 ו 3 ביחד. כלומר ליצור לבסוף שני שדות זהים המכילים שעה ותאריך ושיהיה אפשר להחסירבניהם ולמצוא את ההפרש שיופיע כמספר שבו אוכל להשתמש יותר מאוחר. חשבתי להשתמש בפנק'
F_DATE_DIFF אך איני מצליח להמיר את השדות התווים בכדי להשתמש בפנק' זו.
האם יש למישהו איזה דרך שבעזרתה אוכל לבצע את המרת השדות או כל דרך אחרת שתתן מענה לביצוע חישוב הפרשיי הזמנים.
תודה מראש וחג שמח,
שי.

Please התחברות to join the conversation.

More
14 years 5 months ago #7087 by לינוּר
היי שי,
חג שמח.
(_days_between ([datetime],cast([datechar] as date))*24*60)
+
(
(cast(substring(cast([datetime] as varchar(20)), 12,2) as int)*60+
cast(substring(cast([datetime] as varchar(20)), 15,2) as int))
-
(cast(substring([timechar] , 1,2) as int)*60+
cast(substring([timechar] , 4,2) as int
)))

ואז אתה יכול לעבוד עם כל הפונקציות של קוגנוס.
אחר כך אתה יכול לתת לו פורמט של אינטרוול ולהציג בימים, שעות ודקות.
אבל אם אתה עובד על SQL אולי הייתי בונה פונקציה ב-DB ומפבלשת אותה מאחר ובSQL יש את הפונקציה:
datediff(minute, date1, date2)
יש מצב שיש דרך אופטימלית יותר- אם למישהו עולה דרך טובה יותר אשמח שתשתפו.. זה מה שעלה לי כעת.
חג שמח.
:smile:

Linur Serero
cognos.dwh.co.il/

Please התחברות to join the conversation.

More
14 years 5 months ago #7088 by שי
היי לינור,
תודה רבה על העזרה.
אני אבדוק את העניין ואעדכן.
שוב תודה ושוב חג שמח.
שי.

Please התחברות to join the conversation.

More
14 years 5 months ago #7089 by שי
היי,
בדקתי את העניין וברובו הוא עובד טוב.
נתקלתי בבעיה בהמרת שדה התאריך/זמן (datetime) לשדה תווי. משום מה הוא לא נותן להמיר לא ע"י CAST ולא ע"י TO_CHAR ואז אני לא יכול לבצע את:


(cast(substring(cast([datetime] as varchar(20)), 12,2) as int)*60+
cast(substring(cast([datetime] as varchar(20)), 15,2) as int))

אשמח אם תוכלי בבקשה להסביר לי את חוקיי כתיבת הפנק' שפרטתי מעלה, אולי פשוט אני עושה טעות באופן הכתיבה או משתמש בפנק' על שדות לא טובים...

תודה מראש ושבת שלום,
שי

Please התחברות to join the conversation.

More
14 years 5 months ago #7091 by לינוּר
היי שי,
ראשית מתנצלת על המענה המאוחר.
1. אסביר לך את הפונקציה: ביצעתי המרה של השדה הטקסט שלך שמכיל רק תאריך לשדה מסוג תאריך וחיסרתי בין התאריכים באמצעות הפונקציה:
days_between
שהיא פונקציה של קוגנוס ולכן לא מגבילה לפי
vendor.
התוצאה המתקבלת היא ההפרש רק בימים.
מאחר ואתה מעוניין לקבל את ההפרש ברמת הדקות אזי הפעולה הנל לא הספיקה ולכן לקחתי את השעות משדה התאריך מסוג datetime שלך והפכתי אותו ל-int וכפלתי ב-60 (כדי שיהיה בדקות) והוספתי לו את הדקות משדה התאריך מסוג datetime והפכתי אותם גם ל-int כדי שאוכל לחבר לשעות ולקבל את סך הדקות.
בשלב זה קיבלת את הזמן בדקות משדה התאריך מסוג ה-datetime.
השלב הבא הוא לחסר את הדקות הללו מהזמן שיש לך בשדה הזמן מסוג טקסט ולכן פירקתי את שדה הזמן המדובר לשעות, הפכתי ל-int וכפלתי ב-60 והוספתי את הדקות משדה הזמן וכמובן הפכתי ל-int כדי שאוכל לחבר ביניהם.
2. מוזר לי שה-cast לא עובד לך, תנסה
cast_int(dataitem) or cast(dataitem, int)h
כאשר אתה משתמש ב-to_char אתה משתמש בפונקציית vendor (מניחה שאורקל).
תעדכן אם הסתדרת.
חג גלעד שמח!!!! :cheer:

Linur Serero
cognos.dwh.co.il/

Please התחברות to join the conversation.

More
14 years 5 months ago #7093 by שי
היי,
תודה רבה על ההסבר המפורט.
הבנתי, יישמתי והדבר עובד ממש טוב.
שוב תודה ורק בשורות טובות.
שי

Please התחברות to join the conversation.

More
14 years 5 months ago #7094 by לינוּר

Please התחברות to join the conversation.

Moderators: לינוּר
Time to create page: 0.316 seconds