sql server 日期范围查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 日期范围查询相关的知识,希望对你有一定的参考价值。

参考技术A

SELECT * FROM 表明 WHERE 日期字段名 BETWEEN '20130101' AND '20130130'

或者:

SELECT * FROM 表明 WHERE 日期字段名 BETWEEN CONVERT(datetime,'2013-01-01',120) AND CONVERT(datetime,'2013-01-30',120)

扩展资料:

注意事项

在写按时间段查询的sql语句的时候 一般我们会这么写查询条件:

where date>='2010-01-01' and date<='2010-10-1'。

但是在实执行Sql时些语句会转换成这样:

where date>='2010-01-01 0:00:00' and date<='2010-10-1:0:00:00',再看这个条件的话,就会有些明白,那就是'2010-10-1 0:00:00' 之后的数据例如('2010-10-1:08:25:00')查不到,也就是说2010-10-1的数据查不到。

修改查询条件为:

where date>='2010-01-01' and date<='2010-10-1 23:59:59' 或 where date>='2010-01-01' and date<='2010-10-2'。

某个表某个字段是Datetime型 以"YYYY-MM-DD 00:00:00" 存放

在 SQL Server 中合并重叠的日期范围

【中文标题】在 SQL Server 中合并重叠的日期范围【英文标题】:Combine overlapping date ranges in SQL Server 【发布时间】:2011-08-10 17:41:05 【问题描述】:

我有一个表,其中包含数百万行,要求日期跨度与某个“合同编号”和“服务代码”不重叠。通常有 2-4 行的日期重叠,必须合并到一条记录中。不重叠的记录不应合并,应保持间隙。

ContractNumber     ServiceCode      StartDate      EndDate
1111111            AFL              2010-01-01     2010-12-31
1111111            AFL              2011-01-01     2011-12-31
1111111            AFL              2011-04-01     2012-03-31
1111111            AFL              2011-04-01     2012-06-30
1111111            AFL              2013-01-01     2013-12-31

这些必须组合成:

ContractNumber     ServiceCode      StartDate      EndDate
1111111            AFL              2010-01-01     2010-12-31   (remains the same)
1111111            AFL              2011-01-01     2012-06-30   (merged)
1111111            AFL              2013-01-01     2013-12-31   (gap maintained)

另外,我已经看过这个问题:Eliminate and reduce overlapping date ranges。它在数据子集下工作,但是一旦我在我拥有的所有数据上释放它,它就真的很慢。我需要在几分钟内运行数百万行的东西。有什么想法吗?

【问题讨论】:

【参考方案1】:

在这些问题上花费了很多时间,我认为保持数据干净、没有重叠比从大表中消除它们更有效。约束使我们能够有效地做到这一点:Contiguous Time Periods

【讨论】:

您的建议并不能真正解决我的问题。我显然知道清理数据是最好的选择,但业务需求阻止了我这样做。 @rwponu:祝你好运,但据我所知,没有快速简便的解决方案。 Adam Machanic 在这种情况下推荐了 CLR,但他说他需要编写大量复杂的 C# 代码来解决这个问题。

以上是关于sql server 日期范围查询的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 输入日期范围传递给 SHINY 中的查询

sql 查询时间、日期范围内的数据

SQL Server:填写每个实体具有不同日期范围的缺失日期

SQL Server 在日期范围内聚合

记录之间的 SQL Server 日期时间范围

在 SQL Server 中创建自定义日期范围列表以便于使用