PDA

View Full Version : دستور( select top (10 بر اساس تاریخ



soha_smb
دوشنبه 27 آبان 1392, 18:50 عصر
سلام
می خوام کاربران در روز فقط 10 مطلب مجاز به وارد کردن باشن.
هر رکوردی که ثبت میشه تاریخ و ساعت از نوع datetime هم همراهش ذخیره میشه.
حالا می خوام قبل از ثبت بره تو جدول بگرده بببینه کاربر امروز جندتامطلب ثبت کزده تعداد رکوردهارو برگردونه
اینو با sp زیر نوشتم ولی 0 برمیگردونه

ALTER PROCEDURE [dbo].[GetNewsCount]
@UserID int
AS
BEGIN
declare @Date datetime
set @Date = getdate()
Select COUNT(ID) From News Where UserID= @UserID and AddedOn=@Date
end

لطفا راهنمایی کنید.البته اینو با ( select top(10 نوشتم ولی نشد.

حمیدرضاصادقیان
دوشنبه 27 آبان 1392, 19:40 عصر
سلام.
اینجا (http://barnamenevis.org/showthread.php?426240-%D8%B3%D9%84%DA%A9%D8%AA-%D8%AA%D8%A7%D9%BE-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87) رو ببینید.

soha_smb
دوشنبه 27 آبان 1392, 22:01 عصر
ممنون اونو دیدم ولی اون چیزی نیست که میخوام
من می خوام بدونم یه کاربر در روزجاری چندتارکورد ثبت کرده؟

محمد سلیم آبادی
دوشنبه 27 آبان 1392, 22:35 عصر
امتحان کنید:

ALTER PROCEDURE [dbo].[GetNewsCount]
@UserID int
AS
Select COUNT(ID) From News
Where UserID= @UserID
and cast(AddedOn as date) = cast(getdate() as date)
go

golnaz_a
دوشنبه 27 آبان 1392, 22:39 عصر
دوست عزیز query تون رو این طوری اصلاح کنید ببینید جواب میده:

(Select COUNT(ID) From News Where UserID= @UserID and cast(AddedOn as date)=cast( @Date as date

محمد سلیم آبادی
سه شنبه 28 آبان 1392, 09:22 صبح
دلیل اینکه سطری برنمی گرده این هست که هم نوع ستون شما و هم نوع مقدار برگشتی تابع getdate از نوع datetime هست. و زمانی که این دو را برابر یکدیگر قرار میدهید زمان هم سنجیده و ارزیابی می شود.
دو راه دارید که یکیش قبلا بیان شد یعنی تبدیل این مقادیر به نوع date
راه دیگر این هست که زمان را صفر کنید. که این راه کمی پر هزینه تر خواهد بود. و بایستی از توابعی مثل datediff استفاده بنمایید.