在SQL中比较生效日期
时间:2020-03-05 18:42:06 来源:igfitidea点击:
想知道是否有更好的理由,为什么在需要查看有效的开始日期和结束日期时在WHERE子句中选择记录?
目前,这就是我过去在MS SQL Server上所做的方式。只是担心日期而不是时间。我正在使用SQL Server 2005.
AND Convert(datetime, Convert(char(10), ep.EffectiveStartDate, 101)) <= Convert(datetime, Convert(char(10), GetDate(), 101)) AND Convert(datetime, Convert(char(10), ep.EffectiveEndDate, 101)) >= Convert(datetime, Convert(char(10), GetDate(), 101))
解决方案
回答
尝试
ep.EffectiveStartDate BETWEEN @date1 AND @date2
你会在哪里做类似的事情
declare @date1 datetime, @date2 datetime; set @date1 = cast('10/1/2000' as datetime) set @date2 = cast('10/1/2020' as datetime)
回答
太糟糕了,看看"仅在数据库中我们可以通过更改几行代码来获得1000%+的改进",以了解如何优化此代码,因为这是不可靠的
还要签出没有时间的获取日期时间和带有日期的查询优化
回答
@达伦·科普(Darren Kopp)
注意BETWEEN,请查看SQL Server中的日期之间如何工作?
回答
可以使用的@Darren Kopp
set @date2 = '20201001'
这会让我们失去演员。
footndale我们也可以使用日期算术删除时间。就像是
select dateadd(d, datediff(d, 0, CURRENT_TIMESTAMP), 0)
获取今天的日期(无时间)。我相信这比来回转换更为有效。