在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)

获取今天的日期(无时间)。我相信这比来回转换更为有效。