סקריפט Sql לא עובד

בוקה3

New member
סקריפט Sql לא עובד

שלום חברים,
אני כותב סקריפט בSQL וכאשר אני מריץ אותו, מביא לי טבלה ריקה.
כאשר אני מריץ אותו בלי שורה אחרונה (המביא לי כל הרשומות בשעה אחרונה) אז עובד

אני מציין שאם אני מריץ את הפקודה הזו בנפרד היא עובדת.

צירפתי צילום מסך של הבעיה.

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

SELECT SrvInsId.ServiceInstanceId,
Srv.ServiceName,
SrvInsId.StartTime,
SrvInsId.EndTime,
SrvStatus.StatusName,
SrvInsId.BusinessUniqId

FROM ServiceInstances SrvInsId

INNER JOIN Services Srv
ON Srv.ServiceID = SrvInsId.ServiceTypeId

INNER JOIN ServiceStatuses SrvStatus
ON SrvStatus.StatusId = SrvInsId.Status

WHERE SrvInsId.StartTime >= DATEADD(HOUR, -1, getdate())

ככה לא עובד


SELECT SrvInsId.ServiceInstanceId,
Srv.ServiceName,
SrvInsId.StartTime,
SrvInsId.EndTime,
SrvStatus.StatusName,
SrvInsId.BusinessUniqId

FROM ServiceInstances SrvInsId

INNER JOIN Services Srv
ON Srv.ServiceID = SrvInsId.ServiceTypeId

INNER JOIN ServiceStatuses SrvStatus
ON SrvStatus.StatusId = SrvInsId.Status

ככה עובד בלי הWhere

תודה
 

גרי רשף

New member
אני משער שלא עובד בגלל ה-Where

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

לא כך?
 

בוקה3

New member
קיימות שורות העונים לשעה אחרונה..

אני גם ציינתי את זה.
 

Juventini1

New member
מהו סוג השדה?

היי יש לי שאלה קטנה אלייך, לפעמים ישנם מקרים בהם שדה של תאריך מוגדר כשדה מסוג NVARCHAR או VERCHAR, ואז כל מיני חישובים באמת לא עובדים... האם בדקת שהשדה הזה שלך הוא אכן תאריך?
 

גרי רשף

New member
הייתי מנסה כך

שליפה ללא ה-Where הבעייתי אבל להציג ב-Select את הביטוי עם ה-DateAdd ואת ה-StartTime לידו ולהשתכנע שיש שם שורות בהן ה-StartTime גדול או שווה ל-DateAdd.
 

בוקה3

New member
קיימת שורה לפי שעה אחרונה, תסתכל...

בתמונה שצירפתי.

עם אני מריץ:
select * from [ESBDB].[dbo].[ServiceInstances] where StartTime >= DATEADD(HOUR, -1, getdate())


מקבל רשומה.

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

SELECT SrvInsId.ServiceInstanceId,
Srv.ServiceName,
SrvInsId.StartTime,
SrvInsId.EndTime,
SrvStatus.StatusName,
SrvInsId.BusinessUniqId

FROM ServiceInstances SrvInsId

INNER JOIN Services Srv
ON Srv.ServiceID = SrvInsId.ServiceTypeId

INNER JOIN ServiceStatuses SrvStatus
ON SrvStatus.StatusId = SrvInsId.Status

WHERE SrvInsId.StartTime >= DATEADD(HOUR, -1, getdate())


אני מקבל טבלה ריקה.
משהו ממש לא הגיוני.

בתמונה שצרפתי, מצולפ המסך
 

pitoach

New member
בוקה במקום לדון באוויר כמה ימים בנושא אולי

פשוט תספק לנו DDL+DML שלך וככה נוכל לראות לבד מה קורה ולמה זה קורה

אנא צרף DDL+DML ואני בטוח שנוכל לעלות על הבעיה מהר מאוד
 

pitoach

New member
שאלה טובה
הנה הסבר מלא בבלוג ישן

http://ariely.info/Blog/tabid/83/En...e-DDL-and-Data-Manipulation-Language-DML.aspx

ותמיד אפשר לבצע חיפוש בבלוג אם יש משהו לא ברור (או לשאול כמו שעשית) או להעזר בגוגל כמובן
 
למעלה