PDA

View Full Version : سوال: دستور select برای مقایسه تاریخ



ya30ien2
چهارشنبه 04 اردیبهشت 1392, 14:13 عصر
سلام دوستان
من میخوام که تاریخ رو از کاربر بگیرم و با تاریخ ذخیره در بانکم مقایسه کنه اگه برابر بود یک پیغام بده
و برای این کار کد زیر رو نوشتم :
string strcmd = "select * from existence where NationalNumber='{0}' and Date='{1}'";
strcmd = string.Format(strcmd, NationalNumber, System.Convert.ToDateTime(dtim2.Month + "/" + dtim2.Day + "/" + dtim2.Year));
اما در هنگام مقایسه به کدها ایراد میگیره لطفا اگه کد من اشتباه هستش به من بگید

ya30ien2
چهارشنبه 04 اردیبهشت 1392, 19:17 عصر
کسی نبود من رو راهنمایی کنه
در ضمن جای روز و ماه رو اشتباه گزاشته بودم اون رو درست کردم
اما میگه نوع داده با هم برابر نیست

veniz2008
چهارشنبه 04 اردیبهشت 1392, 20:40 عصر
سلام.
تاریخ رو به چه صورت ذخیره کردید؟( رشته ای؟ یا datetime ؟)
اگر رشته ای هست که اینور هم باید یه رشته براش بفرستید و نیازی به تبدیل کردن به datetime ندارید. و براحتی میتونید با عملگرهای محاسباتی رشته ذخیره شده و رشته ارسالی رو مقایسه کنید.
اگر هم datetime هست که میتونید از تابع datediff استفاده کنید و تفاوت بین تاریخ ثبت شده و تاریخ فرستاده شده رو محاسبه کنید. اگر 0 بود یعنی دو تاریخ با هم برابرند.
موفق باشید.

ya30ien2
چهارشنبه 04 اردیبهشت 1392, 21:23 عصر
تابع datetime هستش و بانک access و فقط تاریخ ذخیره میشه یعنی ساعت کنارش ذخیره نمیشه
لطفا یک مثال بزارید

ya30ien2
پنج شنبه 05 اردیبهشت 1392, 12:21 عصر
کسی نیست بگه دستور select رو چطوری بنویسم؟

veniz2008
پنج شنبه 05 اردیبهشت 1392, 14:18 عصر
توی sql مثالش اینطوری میشه. نمیدونم داخل access هم همینه یا نه :

select UserID, DateDiff(dd,fieldname,@date) from tblname where UserID = @userid
منظور از dd تفاوت دو تاریخ برحسب روز هست.
منظور از fieldname ، نام فیلد جدول شماست که تاریخ رو در اون ذخیره کردید.
منظور از date@ هم تاریخ ارسالی از سمت سی شارپ هست.
UserID هم میشه همون رکوردی که میخواید تاریخش رو چک کنید.

ya30ien2
جمعه 06 اردیبهشت 1392, 23:25 عصر
توی sql مثالش اینطوری میشه. نمیدونم داخل access هم همینه یا نه :

select UserID, DateDiff(dd,fieldname,@date) from tblname where UserID = @userid
منظور از dd تفاوت دو تاریخ برحسب روز هست.
منظور از fieldname ، نام فیلد جدول شماست که تاریخ رو در اون ذخیره کردید.
منظور از date@ هم تاریخ ارسالی از سمت سی شارپ هست.
UserID هم میشه همون رکوردی که میخواید تاریخش رو چک کنید.
دوست عزیز اگه امکانش هست یک مثال کامل بزارید که بهتر درک کنم
بازم ممنون

ya30ien2
شنبه 07 اردیبهشت 1392, 15:17 عصر
از اساتید کسی نمیتونه مشکل من رو حل کنه؟

nima.sh
شنبه 07 اردیبهشت 1392, 16:08 عصر
سلام دوست عزیز...
دلیل اجرا نشدن اینه که تاریخ شما شمسی است..
شما تو دیتابیس نوع فیلد رو nvatchar بگیر،بعد دستور select رو بنویس...
select [field name] from [table name] where [field name] between 1391/04/02 and 1391/05/02

ya30ien2
یک شنبه 08 اردیبهشت 1392, 08:11 صبح
سلام دوست عزیز...
دلیل اجرا نشدن اینه که تاریخ شما شمسی است..
شما تو دیتابیس نوع فیلد رو nvatchar بگیر،بعد دستور select رو بنویس...
select [field name] from [table name] where [field name] between 1391/04/02 and 1391/05/02

دوست عزیز هم درون برنامه هم درون بانک تاریخ میلادی هستش
در ضمن من نوع داده ذخیره شده هم از نوع تاریخ هستش

sgh_programer
یک شنبه 08 اردیبهشت 1392, 13:55 عصر
بنام خدا
سلام
دوست عزیز پیشنهاد میکنم تاریخ را از نوع int بگیری چون اینجوری سرعت جستجو هم بیشتره برای این مشکلت هم میتونی همین کار رو بکنی
به این شکل
تاریخ امروز:1392/2/7
حالا این تاریخ رو به عدد(int) تبدیل میکنیم---->13920207
یعنی ماه و سال و روز را میگیریم بدون جدا کننده کنار هم قرار میدیم

تاریخ تبدیل شده(13920207) رو در بانک اطلاعات ذخیره میکنیم و برای مقایسه هم تاریخ ورودی(تاریخی که از کاربر میگیره) را به عدد تبدیل میکنیم و با تاریخ ذخیره شده مقاسیه میکنیم

امیدوارم به دردت بخوره

khokhan
یک شنبه 08 اردیبهشت 1392, 16:42 عصر
دوست عزیز هم درون برنامه هم درون بانک تاریخ میلادی هستش
در ضمن من نوع داده ذخیره شده هم از نوع تاریخ هستش
سلام

در فرم مربوط به ورود اطلاعات این نمونه نحوه ثبت تاریخ به همراه سایر اطلاعات دریافتی از کاربر در بانک اکسس :لبخند:
ودر فرم جستجو نحوه باز یابی تاریخ از بانک اکسس آورده شده (دستور جستجو در رویداد textchenge تکست باکس است :لبخند:یعنی به عبارتی تاریخ دریافتی از تکست باکس را با تاریخهای موجود در بانک مقایسه و تاریخهایی را که باآن برابرند در گرید نمایش می ده

فرمت تاریخ در بانک به صورت date/time انتخاب شده :لبخند::چشمک: