Sql 通过与getdate比较,显示我的表的expirydate列未过期的数据
我有一个包含列Sql 通过与getdate比较,显示我的表的expirydate列未过期的数据,sql,Sql,我有一个包含列expirydate的表,它是datetime列。我只想显示未过期的数据。 我尝试过 您的问题是什么?谢谢您的快速回复。请不要在ExpiryDate上使用函数,它可能不需要,并且会减慢查询速度。您还可以使用:dateadd(dd,datediff(day,0,getdate())、0来代替convert(date,getdate()),它还可以“截断”只留下日期的时间,但会返回一个datetime值。由于没有到期日期的示例数据,因此应该使用,但不确定。我相信它很容易使用转换,因为只
expirydate
的表,它是datetime
列。我只想显示未过期的数据。
我尝试过
您的问题是什么?谢谢您的快速回复。请不要在ExpiryDate上使用函数,它可能不需要,并且会减慢查询速度。您还可以使用:dateadd(dd,datediff(day,0,getdate())、0来代替convert(date,getdate()),它还可以“截断”只留下日期的时间,但会返回一个datetime值。由于没有到期日期的示例数据,因此应该使用,但不确定。我相信它很容易使用转换,因为只有铸造,但dateadd和datediff将消耗更多的时间,因为你需要计算1900:01:01之间的日差,然后再次添加它们,这将给出过于复杂的当前日期。
SELECT AdId, CreatedId,
CreatedName, AdEmail,
PostName, AdTopic,
[Description], SocietyId,
SocietyName, SocietyUserId,
SocietyUserName, SocietyUserEmailId,
IsAccepted, IsRejected,
IsActive, CreatedDate,
ExpiryDate, City,
[Type], Category
FROM dbo.tblClassifedDetails
WHERE IsAccepted='true'
AND ExpiryDate<GETDATE()
AND @Type=[Type]
AND Category=case
WHEN @Category IS NULL
OR @Category=''
OR @Category='All'
THEN Category
ELSE @Category
END
AND City=case
WHEN @City IS NULL
OR @City=''
OR @City='All'
THEN City
ELSE @City
END
select AdId, CreatedId, CreatedName, AdEmail, PostName, AdTopic,
[Description], SocietyId, SocietyName, SocietyUserId, SocietyUserName,
SocietyUserEmailId, IsAccepted, IsRejected, IsActive, CreatedDate,
ExpiryDate, City, [Type], Category
from dbo.tblClassifedDetails
where IsAccepted='true'
and convert(date,ExpiryDate)>=convert(date,GETDATE())
and @Type=[Type]
and Category= (case when @Category is null or @Category='' or @Category='All'
then Category
else @Category end)
and City=(case when @City is null or @City='' or @City='All'
then City
else @City end)