جستجو بین 2 فیلد تاریخ در SQL Server 2008
باسلام خدمت دوستان عزیزم
من در جدول T1 دو فیلد تاریخ به نامهای D1 و D2 دارم و می خواهم تاریخ هایی که میان این دو فیلد هست را نمایش دهد.
من می نویسم
SELECT * from T1 where D1>=N'1396/04/10'
مشکلی نیست و وقتی نیز می نویسم
SELECT * from T1 where D2<=N'1396/04/10'
باز هم مشکلی نیست ولی وقتی می نویسم
SELECT * from T1 where D1>=N'1396/04/10' and D2<=N'1396/04/10'
رکوردی در جواب نمایش داده نمی شود.
مشکل از کجاست دوستان.
باتشکر
6 پاسخ
سلام
قسمت سوم رو کوئری رو با عملگر Between جایگزین کنید.
ببینید دوست من عملگر Between به معنای بازه هست.
یعنی شما تو کوئریتون میگید نام و نام خانوادگی کارمندانی رو به من نمایش بده،بشرطی که تاریخ استخدامشون بین 950101 تا 960101 باشه.(یعنی بین این بازه ی تاریخی باشه)
حالا اگه این متن رو بخوایم به زبان T-SQL بنویسیم به این صورت میشه.
SELECT Name,Family FROM Employee WHERE HireDate Between '1395/01/01' AND '1396/01/01'
حالا شما به جای همین تاریخ های که نوشتم فیلد "از تاریخ" و "تا تاریخ" رو جایگزین کن.
سلام دوست عزيز
اولا پيشنهاد اكيد ميشه تو SQL Server براي ذخيره مقادير تاريخ از فيلد تاريخ (datetime) استفاده كني و تاريخ ها رو به ميلادي ذخيره كني .
ثانيا اينكه كد شما مشكلي ساختاري نداره . احتمالا ركوردي با شرايط شما سازگار نيست اگر به جاي AND از OR استفاده كني همه نتايج دو دستور اوليه رو خواهي ديد .
موفق باشي .
سلام دوست عزیز
در کد شما تاریخ های '13950101' و '13960101' در فیلد HireDate وجود دارد ولی مشکل من اینجاست که تاریخ اول ('13950101' ) در فیلد D1 و تاریخ دوم ('13960101' ) در فیلد D2 هستش.
باسلام
چون مقایسه میان 2 فیلد مختلف با مقادیر مختلف هست ( بین D1 و D2 ) چطور از Between باید استفاده بکنم.
لطفا کد نمونه را می نویسید.
باتشکر
ببینید این مطلبی رو که شما عنوان کردید براتون بصورت یک جدول درست کردم.
نکته:فیلد تاریخ از نوع CHAR(10) است.
تعداد رکورد وارد در جدول
کوئری اجرا شده
SELECT * FROM Test WHERE D1>=N'1395/01/01' and D2 <=N'1395/02/05'
خروجی کوئری فوق