חיבור בין 2 שדות תאריך ב SQL SERVER
-
שלום לכולם
כידוע מאחורי כל שדה תאריך יש ערך מספרי, כך לפחות זה באקסס, בצורה כזאת אפשר לחבר בין 2 שדות כשאחד מכיל את התאריך והשני מכיל את השעה, שהרי זה חיבור אריתמטי פשוט (שדה של שעה זה בעצם 1/1/1900 והשעה הרצויה ערכו הוא 0 נקודה משהו). לא כן ב SQL SERVER, והנה מה הפתרון, להפעיל פונקציה DATEADD נו באמת??? 3 פעמים, אחד בשביל השעות, אחד בשביל הדקות ואחד בשביל השניות. לא נראה לי כל כך. בחיבור אריתמטי הוא ממש לא מגיב, כלומר נותן את אותה תוצאה. מה שכן כאשר מוסיפים מספר שלם על תאריך הוא אכן מקדם את התאריך ביום באופן אוטומטי, אני מדבר כעת על שעה שזה אמור להיות שבר עשרוני עם מיליארד ספרות אחרי הנקודה. אגב בפונקציה convert הוא באמת מחזיר רק את החלק הintי של התאריך ללא השעה.
כל תרומה תתקבל בברכה.
תודה
נ.ב. זה לא פתרון טוב כי הוא מכריח אותי לבחור שעה מסויימת לתאריך מסויים, אני רוצה להוסיף את ערך השעה לתאריך ושעה שבחרתי!!!פורסם במקור בפורום CODE613 ב22/07/2014 20:56 (+03:00)
-
חס וחלילה, הקוד עצמו עבד באמצעות משתנים, כשהקוד היה מופעל על טבלה מסויימת זה לא עבד. ואז ראיתי שאחד הטריגרים שעשיתי אשם בזה, הוא מאפס את השדה לערכו הישן לפי קריטריון מסויים, מסיבה מסויימת שלא אלאה אותך כרגע, והייתי צריך להגביל את הטריגר בתנאי מסויים שהתחדש בעקבות הצורך בקוד הזה, טעות אנוש זה כל הסיפור, לא להתעצבן.
פורסם במקור בפורום CODE613 ב23/07/2014 19:59 (+03:00)
-
מודה ועוזב ירוחם . . .
אגב לפני 2008 לא היה TIME . . .
ואגב TIME עם או בלי ה 7 זה אותו דבר (כמעט)
מקור
http://msdn.microsoft.com/en-us/library/bb677243.aspxפורסם במקור בפורום CODE613 ב24/07/2014 11:31 (+03:00)
-
טוב לא צריך להגיע לתשובה הקודמת. אבל מה שייצא לי זה מחריד, איזה "קרומקייט" צריך כדי לקבל תאריך ושעה נוכחיים :lol: :lol: :lol: :lol:
select CAST(cast(GETDATE() as date) AS DATETIME) + CAST(cast(GETDATE() as time) AS DATETIME);
סתם... תכלס' זה עובד כשיש לך 2 שדות שונים ומשונים לחבר ביניהם.....
ועל זה אמרתי פעם למישהו בישיבה קטנה "יותר מידי קרומקייט, זה גם לא טוב..."פורסם במקור בפורום CODE613 ב31/07/2014 11:13 (+03:00)
-
@דוד ל.ט.
תגיד מה אתה מנסה לעשות?
אני מקוה שאתה מודע לכך שהGETDATE נותן לך את התוצאה הסופית שלך מלכתחילה.נו אמרתי:
@ארכיטקט"יותר מידי קרומקייט, זה גם לא טוב..."
אני יודע היטיב ש GetDete נותן תאריך ושעה נוכחיים, מה שאני רוצה זה שבמקרים מסויימים ייבחר תאריך בלבד, והערך של השעה יילקח מ GetDete ולצרף את שניהם כחדא. אבל בשביל הדוגמא העלתי את הפונקציה שכולם יכולים להריץ בלי טבלאות וכדומה.
פורסם במקור בפורום CODE613 ב31/07/2014 12:12 (+03:00)
-
למה זה לא עובד?
select cast(GETDATE() as date) + cast(GETDATE() as time)
כי ל DATE אין מקום ל TIME אתה צריך להמיר ל DATETIME ואז להוסיף, כדלהלן:
select CAST(GETDATE() as DATETIME) + cast(GETDATE() as TIME)
פורסם במקור בפורום CODE613 ב31/07/2014 12:24 (+03:00)
-
אני יודע היטיב ש GetDete נותן תאריך ושעה נוכחיים, מה שאני רוצה זה שבמקרים מסויימים ייבחר תאריך בלבד, והערך של השעה יילקח מ GetDete ולצרף את שניהם כחדא. אבל בשביל הדוגמא העלתי את הפונקציה שכולם יכולים להריץ בלי טבלאות וכדומה.
נו זה ממש כמו הקודים שכתב SOFT בעבר עם שינוי מינורי:
DECLARE @d AS DATETIME = '2014-10-10'; DECLARE @t AS TIME(7) = CAST(GETDATE() AS DATETIME); SELECT @D + @t;
אגב, ממש לא נתפס אצלי הסיטואציה של תאריך ממקור פלוני ושעה נוכחית
כי ל DATE אין מקום ל TIME אתה צריך להמיר ל DATETIME ואז להוסיף, כדלהלן:
select CAST(GETDATE() as DATETIME) + cast(GETDATE() as TIME)
למה להמיר? ככה וזהו
select GETDATE() + cast(GETDATE() as TIME)
פורסם במקור בפורום CODE613 ב31/07/2014 12:35 (+03:00)