在Microsoft SQL Server中比较日期的最佳方法是什么?
发布时间:2020-12-13 20:49:57  所属栏目:Windows  来源:网络整理 
            导读:我在一个非常大的表中有一个SQL datetime字段。它被索引,需要查询。 问题是SQL总是存储时间组件(即使它总是午夜),但搜索是一天,而不是时间。 declare @dateVar datetime = '2013-03-11;select t.[DateColumn]from MyTable twhere t.[DateColumn] = dateVa
                
                
                
            | 
                         
 我在一个非常大的表中有一个SQL datetime字段。它被索引,需要查询。 
  
  
问题是SQL总是存储时间组件(即使它总是午夜),但搜索是一天,而不是时间。 declare @dateVar datetime = '2013-03-11; select t.[DateColumn] from MyTable t where t.[DateColumn] = dateVar; 不会返回任何东西,因为t。[DateColumn]总是包含时间分量。 我的问题是这是最好的方法? 似乎有两个主要的选择: >使用dateadd创建第二个变量,并在…之间使用,或者> = …和…< =。 这两个都看起来很混乱 – 我真的不想做一个范围比较或扫描表。 有没有更好的办法? 如果这些选项之一是一贯的最佳方式,那么如何和为什么? 
 在任何情况下,转换为DATE或使用开放式日期范围将产生最佳性能。 FYI,转换日期使用指数是表现最好的。更多测试不同的技术在文章: 
 What is the most efficient way to trim time from datetime?发表于Aaron Bertrand 
  
                          从那篇文章: DECLARE @dateVar datetime = '19700204';
-- Quickest when there is an index on t.[DateColumn],-- because CONVERT can still use the index.
SELECT t.[DateColumn]
FROM MyTable t
WHERE = CONVERT(DATE,t.[DateColumn]) = CONVERT(DATE,@dateVar);
-- Quicker when there is no index on t.[DateColumn]
DECLARE @dateEnd datetime = DATEADD(DAY,1,@dateVar);
SELECT t.[DateColumn] 
FROM MyTable t
WHERE t.[DateColumn] >= @dateVar AND 
      t.[DateColumn] < @dateEnd; 
 也是从那篇文章:使用BETWEEN,DATEDIFF或CONVERT(CHAR(8)…都慢了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- botframework – Microsoft.Bot.Builder – 偶发错误 – “
 - Windows安装程序 – 最简单的解决方案来替代MSI中的一个小文
 - windows – 是否可以防止在LOB UWP桌面应用程序/后台任务中
 - winapi – 在Windows 7上禁用Ctrl Alt Del
 - windows – 如何从不同的线程执行SendMessage?
 - windows – Wincachegrind给出错误
 - Windows Phone 7开发指南
 - 难道真的不可能写一个隐藏Windows密码的php cli密码提示吗?
 - JsonRequestBehavior不存在问题,JsonRequestBehavior属于哪
 - 使用typescript重新定义window.console
 
推荐文章
            站长推荐
            - 域控制器 – Windows Server 2012R2作为附加域控
 - winapi – 如何在Vista的Common Item Dialog中添
 - 安装 – WiX:安装服务为LocalService
 - 将cygwin主目录设置为Windows的“用户配置文件”
 - Windows – 在Win 2008 R2上禁用管理员帐户
 - windows – 为命令行程序生成GUI的工具
 - 局域网内Windows机器实现远程快速拷贝的做法
 - windows-desktop-gadgets – 在没有Visual Studi
 - compact-framework – 无法加载DLL’coredll.dll
 - Windows Server 2008 R2(x64) IIS7+PHP5.6.30(F
 
热点阅读
            