PDA

View Full Version : کمک برای یک query که دارای تاریخ است



asal71
یک شنبه 28 دی 1393, 00:12 صبح
سلام دوستان
میشه یه کمکی به من بکنید.سوالی که که مطرح هست اینه:"

تعداد پرونده‌های باز شده توسط هر کارمند رسمی در سال‌های 90 تا 93

"
و خب چیزیکه من نوشتم براش واروری که میده به ترتیب ایناست:
select
Idcarmand,COUNT(Pid) from Carmand c inner join parvande p on c.Idcarmand=p.Idcarmand2

where
90-1-1<=p.Tarikhbazshodan and p.Tarikhbazshodan<= 93-12-29 and c.typee='rasmi'

group
by c.Idcarmand

........................................


Operand type clash: date is incompatible with int

مشکل از نحوه نوشته تاریخه عایا؟
کسی میتونه راهنماییم کنه که چجوری باید بنویسم؟

nedata
یک شنبه 28 دی 1393, 09:04 صبح
select Idcarmand,COUNT(Pid)from Carmand c innerjoin parvande p on c.Idcarmand=p.Idcarmand2


where p.Tarikhbazshodan between '1390/01/01' and '1393/12/29' and c.typee='rasmi'


group
by c.Idcarmand

asal71
یک شنبه 28 دی 1393, 18:27 عصر
select Idcarmand,COUNT(Pid)from Carmand c innerjoin parvande p on c.Idcarmand=p.Idcarmand2


where p.Tarikhbazshodan between '1390/01/01' and '1393/12/29' and c.typee='rasmi'


group
by c.Idcarmand

نوع تاریخ رو date باید بگیرم دیگه؟

tiphooo
سه شنبه 30 دی 1393, 01:58 صبح
خطا به خاطر استفاده از تاریخ به صورت عددی است 29-12-93 موقع کامپایل فقط 93 ان دیده میشود و خطای استفاده از نوع int به جای date دارید
برای مقایسه مقادیر از نوع date باید مقدار تاریخ را بین '' بگذارید
شما ظاهرا از تاریخ شمسی استفاده کرده اید در اینصورت نوع تعریف شده برای ان قاعدتا باید varchar باشد نه date و در ضمن در این حالت باید مقادیر تاریخ وارد شده یک فرمت استاندارد داشته باشد تا مقایسه درست انجام شود
مثلا شما در جایی 1-1-93 گذاشته اید و در جای دیگر 29-12-93
93-1-1 هم باید 01-01-93 باشد
در کل مقادیر تاریخ را به صورت میلادی تعریف کنید در محاسبات و مقایسه ها کار بسیار راحت تر خواهد بود و نیاز به کنترلهای خاص نیست فقط برای نمایش باید ان را با توابع موجود در همین سایت به شمسی تبدیل کنید