Sql 时间做条件

Posted ghelement

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql 时间做条件相关的知识,希望对你有一定的参考价值。

在sql的查询中我们应该尽量避免在WHERE条件中的字段上用函数,如DATEDIFF,DATEADD,CONVERT

因为这样做会使该字段上的索引失效,影响SQL语句的性能。即使该字段上没有索引,也会给sql带来压力。

在以时间做条件查询的时候,比如要查询1天前的数据多数人会这么写

--前一天数据
SELECT * FROM TableA WHERE DATEDIFF(DAY,dtTime,GETDATE()) < 1
--当前时间到昨天的数据
SELECT * FROM TableA WHERE DATEDIFF(DAY,dtTime,GETDATE()) <= 1

 

我们应该采用以下的写法:

--前一天数据
SELECT * FROM TableA WHERE dtTime > CAST(GETDATE()-1 AS date) AND dtTime< CAST(GETDATE() AS date)
--当前时间到昨天的数据
SELECT * FROM TableA WHERE dtTime > CAST(GETDATE()-1 AS date) 

 

以上是关于Sql 时间做条件的主要内容,如果未能解决你的问题,请参考以下文章

条件片段和导航重用

MyBatis动态SQL标签用法

SQL Prompt7.2下载及破解教程

自动刷新android片段,直到满足条件

如何有条件地将 C 代码片段编译到我的 Perl 模块?

Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取