PDA

View Full Version : تاریخ در Sql server



Batman
چهارشنبه 23 خرداد 1386, 20:03 عصر
دوستان من توی sql server یه فیلد دارم به اسم Date
توی دلفی مثلا میخوام از یه تاریخ به بعد یا بین دو تاریخ جستجو کنه
اما خطای Parameter date not found رو میده
در ضمن فیلد رو از هر نوعی که بگین امتحان کردم اما فایده ای نداشته
لطفا کمکم کنید ممنون

m-khorsandi
چهارشنبه 23 خرداد 1386, 20:08 عصر
دقیقاً چی نوشتی؟ از چه کامپوننتی استفاده میکنی؟

SYNDROME
چهارشنبه 23 خرداد 1386, 21:53 عصر
با سلام
می تونی این را هم ببینی.
http://barnamenevis.org/forum/showthread.php?t=64240

ealvandi
چهارشنبه 23 خرداد 1386, 22:04 عصر
راجع به این مورد قبلا بحث شده. جستجو کنید.

Saeid59_m
پنج شنبه 24 خرداد 1386, 07:36 صبح
هیچ کاری نداره اینقدر هم که می گن مشکل نیست
یه راه حل دارم که سالهاست ازش استفاده می کنم و مشکلی هم نداشته

یه فیلد دیگه می تونه از نوع String‌باشه تعریف کن

و معادل تاریخ ها رو به این شکل توی این فیلد هم قرار بده

فیلد تاریخ ----------------------- فیلد جدید
1385/1/2 ----------------------- 13850102
1386/12/1 ---------------------- 13851201


بعد می تونی بر اساس این فیلد جدید هم Sort کنی و هم فاصله بین دو تاریخ را بدست بیاوری

ghabil
پنج شنبه 24 خرداد 1386, 09:59 صبح
هیچ کاری نداره اینقدر هم که می گن مشکل نیست
یه راه حل دارم که سالهاست ازش استفاده می کنم و مشکلی هم نداشته

یه فیلد دیگه می تونه از نوع String‌باشه تعریف کن

و معادل تاریخ ها رو به این شکل توی این فیلد هم قرار بده

فیلد تاریخ ----------------------- فیلد جدید
1385/1/2 ----------------------- 13850102
1386/12/1 ---------------------- 13851201


بعد می تونی بر اساس این فیلد جدید هم Sort کنی و هم فاصله بین دو تاریخ را بدست بیاوری

فکر نمیکنی تمام کسانی که نشستن دیتابیس نوشتن و توی تمام دیتابیسها هم تایپ Date رو درست کردند و حتی استاندارد بین المللی برای این فیلد خاص گرفتند ، نظرشون با نظر تو فرق داره ؟ مثلا شاید فکر کردند که بجای اینکه برای هر تاریخ 10 کارکتر فضا اشغال کنیم میتونیم یک عدد فضا بگیریم (نتنها کمتر فضا اشغال میکنه که در جستجو و مقایسه هم خیلی سریعتره)، یا مثلا فکر کردن بعضی وقتها ترکیب زمان و تاریخ مهمه ، یا مثلا نشستن روی این تایپ اپراتور تعریف کردند ...
اگر به هر دلیلی از اصول برنامه نویسی فرار میکنید لطفا دیگران رو به اشتباه برنامه نوشتن ترغیب نکنید.

در مورد سوال اصلی هم من متوجه نشدم اسم فیلد رو گذاشتید Date?

Batman
پنج شنبه 24 خرداد 1386, 20:50 عصر
منظورتون از نوع string کدومه
ما توی sql server متغییری از نوع String نداریم

vcldeveloper
جمعه 25 خرداد 1386, 02:28 صبح
ما توی sql server متغییری از نوع String نداریم
char, varchar, nvarchar

object
جمعه 25 خرداد 1386, 02:44 صبح
رفیق به نظرم مشکل تو هیچ کدوم از اینها نیست
مشکل تو از اسمیه که برای فیلدت انتخاب کردی
دوتا کار میتونی بکنی
1 نام فیلدت رو عوض کنی
2 وقتی میخوای این query رو برنی بجای date بنویسی [date]

Batman
جمعه 25 خرداد 1386, 03:30 صبح
مشکل من از اسم فیلد نیست
چون زمانی که در یک تاریخ خاص جستجو میکنم مشکلی نداره
اما زمانی که بین دو تاریخ یا از یه تاریخ به بعد رو جستجو می کنم پیغام زیر رو میده
parameter "date" not found

Batman
جمعه 25 خرداد 1386, 04:33 صبح
است varchar من دقیقا از این کد استفاده کردم و فیلد تاریخ هم از نوع

form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('select * from accounts where(date>=date)');
form1.ADOQuery1.Parameters.ParamByName('date').Val ue:=form1.Edit9.Text;
form1.ADOQuery1.Open;

vcldeveloper
جمعه 25 خرداد 1386, 05:17 صبح
WHERE ([date] >= :date)

نام فیلد date را باید در [] قرار بدید چون یک کلمه کلیدی برای SQL Server محسوب میشه. برای date دوم هم که در واقع مهرف پارامتر شما هست، باید از : قبل از اسمش استفاده کنید تا دلفی متوجه بشه که باید این کلمه را با مقدار پارامتر date جایگزین کنه.
صرف نظر از اینکه مشکلتون کلمه date هست یا نه، کار جالبی نکردید که نام فیلد و نام پارامتر را data گذاشتید، چون این کلمه هم برای دلفی و هم برای SQL Server دارای معنی خاص هست.

Batman
جمعه 25 خرداد 1386, 05:58 صبح
آقای کشاورز دستت درد نکنه
مشکلم حل شد
در ضمن حتما از نظر شما استفاده خواهم کرد
بازم ممنون