PDA

View Full Version : مشکل تاریخ در بانک



alireza2007
پنج شنبه 20 اردیبهشت 1386, 10:34 صبح
با سلام

من از سه فیلد برای تاریخ استفاده کردم(روز/ماه/سال)و برای جستجو از تاریخ تا تاریخ دچار مشکل شدم (برای جستجو از یک Query بهره گرفتم )به شکل زیر:(از تاریخ 1/10/80 تا 1/12/85 )اما نتیجه درست نیست جای and و or رو هم عوض کردم جواب نداد.


query1.sql.text:='select * from main_tbl where ((sal<=85)and(sal>=80))or ((mah<=12)and(mah>=10))or ((roz<=1)and(roz>=1))

javidtaheri
پنج شنبه 20 اردیبهشت 1386, 16:44 عصر
باید بصورت حلقه بنویسی
مثل شرط ماه که عنوان کردی فقط ماه 10 و 11و 12 را نشان میده در صورتیکه 82/05/01 نیز در این بازه است و در نتایج جستجو نمیاد

m-khorsandi
پنج شنبه 20 اردیبهشت 1386, 18:22 عصر
select *
from tabinfo
where (year >= 1386 and month >= 1 and day >= 1) and
(year <= 1386 and month <= 1 and day <= 10)

Younes_M
جمعه 21 اردیبهشت 1386, 05:13 صبح
سلام
باعرض معذرت

query1.sql.text
:=
'select * from main_tbl where ((sal*10000 + mah*100 + roz) <= 851201) and
((sal*10000 + mah*100 + roz) >= 801001)'


امیدوارم کمک کند

alireza2007
شنبه 22 اردیبهشت 1386, 11:49 صبح
با سلام مجدد

قطعه برنامه ای که نوشته اید اعداد معرف چه چیزهایی می باشند(با در نظر گرفتن جدا بودن فیلدها)

Younes_M
شنبه 22 اردیبهشت 1386, 16:48 عصر
از اعداد به عنوان ساخت یک عدد واحد از اجرای تاریخ استفاده شده است مثلا تاریخ 85/12/01 میشود 85 * 10000 + 12 * 100 + 01 = 851201

از این کار برای ساده سازی مقایسه بین تاریخها استفاده میشود

Bahmany
یک شنبه 23 اردیبهشت 1386, 06:34 صبح
سلام

query1.sql.text:='select * from main_tbl where ((sal<=85)and(sal>=80))or ((mah<=12)and(mah>=10))or ((roz<=1)and(roz>=1این کاری که شما کردید کاملا اشتباه هست.
شما بهتره یک فیلد تاریخ شمسی از نوع char(12) و یک فیلد تاریخ میلادی از نوع Datetime در بانک داشته باشید محاسباتتون رو در فراخوانی ها می تونید با فیلد میلادی انجام دهید و هم می توانید جواب رو به صورت شمسی نشون بدید
برای تبدیل شمسی به میلادی و برعکس نیز class های زیادی در سایت خودمون وجود داره
مثلا :
Select shmasi_date from SampleTable where Milady_date between '2001/01/01' and '2005/01/01'