50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

جستجو بین 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'

رکوردی در جواب نمایش داده نمی شود.

مشکل از کجاست دوستان.

باتشکر

پرسیده شده در 1396/03/27 توسط

6 پاسخ

0

سلام

قسمت سوم رو کوئری رو با عملگر Between جایگزین کنید.

پاسخ در 1396/04/13 توسط
0

ببینید دوست من عملگر Between به معنای بازه هست.

یعنی شما تو کوئریتون میگید نام و نام خانوادگی کارمندانی رو به من نمایش بده،بشرطی که تاریخ استخدامشون بین 950101 تا 960101 باشه.(یعنی بین این بازه ی تاریخی باشه)

حالا اگه این متن رو بخوایم به زبان T-SQL بنویسیم به این صورت میشه.

SELECT Name,Family
FROM Employee
WHERE HireDate Between '1395/01/01' AND '1396/01/01'

حالا شما به جای همین تاریخ های که نوشتم فیلد "از تاریخ" و "تا تاریخ" رو جایگزین کن.

پاسخ در 1396/04/14 توسط
0

سلام دوست عزيز

اولا پيشنهاد اكيد ميشه تو SQL Server براي ذخيره مقادير تاريخ از فيلد تاريخ (datetime) استفاده كني و تاريخ ها رو به ميلادي ذخيره كني .

ثانيا اينكه كد شما مشكلي ساختاري نداره . احتمالا ركوردي با شرايط شما سازگار نيست اگر به جاي AND از OR استفاده كني همه نتايج دو دستور اوليه رو خواهي ديد .

موفق باشي .

پاسخ در 1396/03/30 توسط
0

سلام دوست عزیز

در کد شما تاریخ های '13950101' و '13960101' در فیلد HireDate وجود دارد ولی مشکل من اینجاست که تاریخ اول ('13950101' ) در فیلد D1 و تاریخ دوم ('13960101' ) در فیلد D2 هستش.

پاسخ در 1396/04/15 توسط
0

باسلام

چون مقایسه میان 2 فیلد مختلف با مقادیر مختلف هست ( بین D1 و D2 ) چطور از Between باید استفاده بکنم.

لطفا کد نمونه را می نویسید.

باتشکر

پاسخ در 1396/04/14 توسط
0

ببینید این مطلبی رو که شما عنوان کردید براتون بصورت یک جدول درست کردم.

نکته:فیلد تاریخ از نوع CHAR(10) است.

تعداد رکورد وارد در جدول

رکورد جداول

کوئری اجرا شده

SELECT * FROM Test WHERE D1>=N'1395/01/01' and D2 <=N'1395/02/05'

خروجی کوئری فوق

رکورد 2
پاسخ در 1396/04/19 توسط

پاسخ شما