دستور( select top (10 بر اساس تاریخ
سلام
می خوام کاربران در روز فقط 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 نوشتم ولی نشد.
نقل قول: دستور( select top (10 بر اساس تاریخ
نقل قول: دستور( select top (10 بر اساس تاریخ
ممنون اونو دیدم ولی اون چیزی نیست که میخوام
من می خوام بدونم یه کاربر در روزجاری چندتارکورد ثبت کرده؟
نقل قول: دستور( select top (10 بر اساس تاریخ
امتحان کنید:
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
نقل قول: دستور( select top (10 بر اساس تاریخ
دوست عزیز query تون رو این طوری اصلاح کنید ببینید جواب میده:
(Select COUNT(ID) From News Where UserID= @UserID and cast(AddedOn as date)=cast( @Date as date
نقل قول: دستور( select top (10 بر اساس تاریخ
دلیل اینکه سطری برنمی گرده این هست که هم نوع ستون شما و هم نوع مقدار برگشتی تابع getdate از نوع datetime هست. و زمانی که این دو را برابر یکدیگر قرار میدهید زمان هم سنجیده و ارزیابی می شود.
دو راه دارید که یکیش قبلا بیان شد یعنی تبدیل این مقادیر به نوع date
راه دیگر این هست که زمان را صفر کنید. که این راه کمی پر هزینه تر خواهد بود. و بایستی از توابعی مثل datediff استفاده بنمایید.