לא מצליח לסנן ב SQL לפי datetime ..

ItushPita

New member
לא מצליח לסנן ב SQL לפי datetime ..

יש לי שדה מסוג varchar באורך 50 ב DB .( שמו targetdate ) בקוד אני שולח לוכו ערכים מסוג datetime והכל בסיידר. עכשיו ב sql אני מנסה לבצע סינון לפי תווך תאריכים אבל הוא לא מוצק שורות למרות שיש כמובן. אולי אני צריך convert ? אבל איך ולמי ועל מה?
 

ItushPita

New member
אז ככה

ב SP אני מקבל @FromDateDue datetime אחר כך אני שואל ב where [dbo].tblReportLine.TargetDate between @FromDateDue and @ToDateDue ניסיתי גם לעשות convert אבל לא הלך כי לא ידעתי למי לעשות convert
 
תתחיל מלדבג את השאילתה...

נסה להריץ את השאילתה ידנית, כלומר צור קובץ SQL שיוצר שני משתנים מסוג DateTime, ולאחר מכן הרץ את
[dbo].tblReportLine.TargetDate between @FromDateDue and @ToDateDue​
ותראה קודם כל שהשאילתה מחזירה את התוצאות הראויות, אח"כ תעבור לקוד האפליקציה שלך.
 

J u n k y

New member
אלמנטרי, ווטסון ידידי

אתה בטח עושה משהו בסגנון
SELECT * FROM blabla WHERE Date=@Date​
הבעיה עם DATETIME היא, שהוא מכיל גם שניות ואלפיות שניה, כך שאם שאם התאריכים לא מתאימים עד לרמת האלפיות, ההשוואה מחזירה FALSE. יש 2 דרכים לפתור את הבעיה: 1) להמיר את הפרמטר גם ל - NVARCHAR ואז להשוות מחרוזות 2) הדרך העדיפה: להמיר את הערך בטבלה ל - DATETIME ואז להשוות את 3 החלקים בנפרד (יום, חודש ושנה).
 
למעלה