想知道为什么在需要查看有效的开始日期和结束日期的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))

===============>>#1 票数:1

太糟糕了,看看“ 仅在数据库中您可以通过更改几行代码获得1000%+的改进”,以了解如何优化此代码 ,因为这是不可靠的

还要签出不带时间的获取日期时间带日期的查询优化

===============>>#2 票数:1

@Darren Kopp-您可以使用

set @date2 = '20201001'

这会让你失去演员。

footndale-您也可以使用日期算术删除时间。 就像是

select dateadd(d, datediff(d, 0, CURRENT_TIMESTAMP), 0)

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

===============>>#3 票数:0

@达伦·科普

注意BETWEEN,请查看SQL Server之间的日期之间如何工作?

===============>>#4 票数:0

AND DateDiff(Day, 0, GetDate()) + 1 > ep.EffectiveStartDate
AND DateDiff(Day, 0, GetDate()) < ep.EffectiveEndDate

我认为您会发现这些条件可以提供最佳性能。 这将愉快地利用索引。

我也非常确定这是正确的,并将提供正确的数据。 没有时间部分的日期无需进一步计算。

===============>>#5 票数:-1

尝试

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)

  ask by Dwight T translate from so

未解决问题?本站智能推荐:

4回复

SQL SERVER 2005中的SQL查询 - 比较日期

我很难做这个查询。 我想比较查询中的日期,我的数据库中的日期是这种格式: (MM / DD / YYYY HH:MM:SS AM) 我想比较这个日期和今天的明天,加上一个。 我的问题是: 如何在sql server中声明明天的日期? 你会如何比较这两个日期? 谢谢!
8回复

在SQL Server中存储旧日期的最佳方法

在SQL Server 2005中存储旧日期(1753之前)的最佳/最有效方法是什么? 我不关心存储时间 - 只是日期。 SQL Server的日期时间数据类型只能保存日期回到1753年1月1日.MSDN文档声明有date和datetime2数据类型,但SQL Server Manageme
15回复

从SQL Server中的周数获取周开始日期和周结束日期

我有一个查询计算会员在数据库中的结婚日期... 如何在结果集中表示每周的开始和结束时计算出来?
7回复

SQL不会根据确切日期提取记录

我导出了记录,我想知道在特定日期导出的记录。 这是行不通的。 这是我查询的数据。 我发出此命令,该命令不检索确切的匹配项 有趣的是> =,>,<=可以工作。 到底是什么问题? 导出的日期被声明为datetime字段。 我正在使用Windows X
3回复

根据另一列中的日期将列中的日期更改为30

我有1个日期列,我想根据另一列中的日期更改数据库。 这是我的样本输出列 我想将“dtexpires”改为“dtcreated”加30天。 表名是“客户”
1回复

日期停止时,SQL中所有记录的输出日期(必须为一个月间隔)

我有这个问题,我有月跳的数据。 如您所见,“记录日期”始终每次跳跃1个月。 我需要为2017年1月1日生成新行。 基本上,每当月份有一个间隔时,我都需要生成一个新行。 我该怎么办? 财政周只是一个月中的星期,月份是一个月,年份是一年。 Week num是运行几年的周,它开始于
2回复

如何将具有开始日期和结束日期的现有表加入现有日历表以计算工作日

如何将具有开始日期和结束日期的现有表加入现有日历表以计算工作日。 我的日历表如下所示:- 另一个包含开始日期和结束日期的表如下所示:
4回复

如何在SQL语句中每周获取最新记录

我试图每周一次从SQL Server 2005数据库导出最新记录。 这是我的表: 如何创建输出表应该是这样的: 我的SQL脚本:
11回复

如何比较两个日期以查找SQL Server 2005中的时差,日期操作

我有两列: 使用T-SQL如何找到作业开始到结束之间经过的原始时间? 我尝试了这个: 但最终结果是:
2回复

SQL Server 2008中的日期类型是否已更改?

我对“为什么1899-12-30为什么将Access / SQL Server中的零日期而不是12/31设为零日期”感到困惑。 SQL Server 2008之前的版本中是否有日期类型? 我找不到。 在SQL Server 2008中,零日期是0001-01-01。 在以前的SQL