PDA

View Full Version : جستجو از یک تاریخ تا تاریخ دیگه



jannati
دوشنبه 20 مهر 1383, 15:40 عصر
سلام دوستان
من یک جستجو روی دیتابیس میخوام انجام بدم که رکوردهای بین دوتا تاریخ را که کاربر وارد میکنه پیدا کنه.در دیتابیس نوع تاریخ را nvarchar(10انتخاب کرده ام و کاربران نیز با dropdownlistسال و ماه و روز را وارد میکنند.
چطور میتونم در sqlاین مقایسه را انجام بدم؟

MSYNK
دوشنبه 20 مهر 1383, 15:58 عصر
با سلام
فکر کنم یه دستوراتی تو SQLServer هست که برای تبدیل انواع به نوعهای دیگه بکار میره(بیشتر شبیه VB هستش)
پس شاید بشه براحتی با تبدیل مقدار اون فیلدها به تاریخ٬ مقایسه تاریخی رو هم توهمون کوئری انجام بدی!
اگه نشد که باید یا نوع فیلدتو عوض کنی(به نظر من از اولش هم این بهترین راه حله)
و یا اینکه مقادیر رو از دیتابیس بخونی و تو کد خودت مقایسه رو انجام بدی و یعد نتایج رو بدست بیارین!
امیدوارم حل بشه! مشکلتون البته...
موفق باشین.

Farhad.B.S
دوشنبه 20 مهر 1383, 16:34 عصر
فکر میکنم به دلیل ذخیره تاریخ های شمسی مجبور به استفاده از نوع nvarchar شدید ، در این صورت از اونجایی که فرمت تاریخ های وارد شده یکسانه ، میتونید با استفاده از مقایسه گر های معمول رکورد های بین دو تاریخ رو استخراج کنید :


SELECT * FROM YourTable WHERE DateField > FirstDate AND DateField < SecondDate

jannati
سه شنبه 21 مهر 1383, 08:30 صبح
ممنون از راهنمایی های خوبتون
اما هنوز یک مشکل دیگه دارم و اینه که با and کار نمیکنه.مثلا sqlزیر جواب میده:


SELECT *
FROM dbo.grid
WHERE (dat1 > '01/01/1380')

اما این کد هیچی نمایش نمیده:


SELECT *
FROM dbo.grid
WHERE (dat1 > '01/01/1380') and (dat1<'01/01/1382')

حالا اگه بین دوتا پرانتز orهم بذارم کار میکنه .اما من نیاز به رکوردهای بین دوتاتاریخ دارم.
دلیلش چیه؟اگه مقدوره ممکنه راهنمایی کنید :oops:

Farhad.B.S
سه شنبه 21 مهر 1383, 11:41 صبح
اشکال از فرمت تاریخ های مورد استفاده است.
با این فرمت (روز/ماه/سال از چپ به راست) ، حتی نتیجه کوئری زیر هم درست نخواهد بود :

SELECT *
FROM dbo.grid
WHERE (dat1 > '01/01/1380')

بنابراین باید فرمت تاریخ هاتون رو به "سال/ماه/روز - از چپ به راست " تغییر بدید ، مثلا :


SELECT * FROM MyTable WHERE [Date] > '1383/01/06' AND [Date] < '1383/12/06'

jannati
سه شنبه 21 مهر 1383, 14:02 عصر
ممنون .درست شد :gift: :flower: