`

解决SQL Server中between and数据不包含的问题

阅读更多

SQL Server中的between and基本用法大家耳熟能详,这里不说它的用法,就说最近用它查数据时碰到的一个问题。基本情况是这样子的:

数据库中有一个字段field7,是datetime类型的,也就是这个字段会保存年月日 时分秒的数据,当页面传过来数据'2017-04-18'(开始时间)和'2017-04-20'(结束时间)时,查询的SQL应该是:

field7 between '2017-04-18' and '2017-04-20'。这样子查询之后,能查询到18/19的数据,20的数据没有。

而实际上我们需要显示20号的数据。

 

解决方法有4个

1、手动往日期后面加1(不推荐)

基本思路:获取到日期之后手动给日期+1,也就是人为的推后一天,这样子就出来当前的数据了。

弊端:需要处理跨月、跨年、闰年的情况,比较麻烦。所以不推荐。

 

2、在between and的日期后面添加时分秒的限制(推荐)

如:field7 between '2017-04-18 00:00:00.000' and '2017-04-20 23:59:59.999'

 

3、使用>=、<=并且在日期后面添加时分秒的限制

如:field7>='2017-04-18 00:00:00.000' and field7<='2017-04-20 23:59:59.999'

 

4、使用日期函数datediff

如:datediff(day,'2017-04-18',field7)>=0 and datediff(day,'2017-04-20',field7)<=0

 

PS:试了第二种方法之后,觉得between and并不像印象中和网上说的闭合关系(between包含开始数据,and不包含),而是时间的限制不一样。像最开始问题描述的一样,那时候的between对时间的限制是00:00:00.000,and的限制也是这个,像2017-04-20 15:22:32.287这样子的数据,

必然不在 '2017-04-18 00:00:00.000' and '2017-04-20 00:00:00.000'的区间里,自然也就查不到对应的数据啦。仅个人猜想,不喜勿喷!酷

 

分享到:
评论

相关推荐

    kettle连接sqlserver连不上-jtds.jar包

    首先,标题"Kettle连接SQLServer连不上-jtds.jar包"表明了问题的核心:Kettle无法成功连接到SQL Server数据库。这通常是因为缺少适当的驱动程序,即Java数据库连接(JDBC)驱动。在Kettle中,JDBC驱动是用于与各种...

    SQl server练习50题

    在SQL Server的学习过程中,实践是提升技能的关键。"SQL Server练习50题"是一个非常实用的资源,旨在帮助用户巩固SQL Server的基础知识,特别是查询和多表查询这两方面的重要技能。下面将对这两个主题进行详细讲解。...

    SQL Server 存储层级数据实现无限级分类,左右值分类

    ### SQL Server 存储层级数据实现无限级分类与左右值分类 #### 一、背景介绍 在处理具有层级关系的数据时,例如商品分类、组织架构等,传统的递归方法虽然直观,但在层级较深的情况下会导致性能问题。为解决这一...

    简析SQL Server中的数据查询.pdf

    文档中提到的条件包括等于“=”、不等于“”、大于“&gt;”、BETWEEN范围查询、IN列表查询、LIKE模糊匹配以及组合条件的AND、OR逻辑运算。 3. 聚合函数与分组:文档提到了聚合函数的使用,这是SQL Server中用来对一组...

    sqlserver sql 实现 escape 解码

    在SQL Server环境中,有时我们需要处理含有特殊字符的字符串,这些字符串可能是通过JavaScript的`escape`函数编码过的。JavaScript的`escape`函数用于编码URL、非ASCII字符和其他特殊字符,以便在网络上传输。当我们...

    sqlserver导出excel文件出错解决方案

    在日常工作中,我们经常需要将 SQL Server 数据库中的数据导出到 Excel 文件以便进一步分析或共享。然而,在执行这一操作时,可能会遇到错误代码 0x800A0E7A 和 0x80040154 的问题。这两个错误通常与 SQL Server ...

    海量数据查询sqlserver

    总之,处理SQL Server中的海量数据查询、分页和排序,需要综合运用各种技术和策略,包括但不限于索引优化、分区、数据压缩、查询重构以及执行计划监控。理解这些概念并灵活应用,将有助于提升系统性能,满足大数据...

    SQL_Server数据库试卷

    6. BETWEEN操作符:在SQL中,BETWEEN用于表示一个范围,包含边界,所以"年龄 BETWEEN 15 AND 35"表示年龄包括15岁和35岁。 7. SQL语言特点:SQL是结构化查询语言,具备数据定义、查询、操纵和控制功能,是关系...

    sql server常用命令

    添加数据记录是 SQL Server 中的一种基本操作,它允许我们将新的数据记录添加到数据表中。常用的添加数据记录命令包括: * `insert into 数据表 (字段 1,字段 2,字段 3 …) values (值 1,值 2,值 3 …)` * `insert ...

    SQLserver中的表数据的操作(二).pdf

    下面我们将详细介绍 SQL Server 中的表数据操作,包括数据查询、数据分析、数据修改和数据优化等方面。 一、数据查询 数据查询是 SQL Server 中最基本也是最常用的操作之一。我们可以使用 SELECT 语句来查询表中的...

    SQLServer中常用语句

    这里我们详细探讨一下SQL Server中的一些常用语句,包括创建表、插入记录、删除记录、修改数据、创建索引以及进行查询。 首先,创建表是数据库的基本操作。例如,创建一个名为`Student`的表,包含学生编号(Sno)、...

    SQLSERVER时间函数汇总

    在SQL Server中,时间函数是数据库管理中不可或缺的一部分,它们用于处理日期和时间数据类型,进行各种计算和转换。这篇博客“SQLSERVER时间函数汇总”深入探讨了SQL Server中的时间函数,提供了丰富的知识资源。 ...

    使用LabVIEW操作ACCESS、MySQL、SQL server数据库实现按照时间段查询数据

    1. `SELECT * FROM 商品 WHERE 登记日期 between #2022/5/4 8:00:00# and #2023/2/5 17:30:00#;` 2. `SELECT 商品名称 FROM 商品 WHERE 登记日期 &gt;= #2022/5/4 8:00:00#;` 3. `SELECT 商品名称,商品种类 FROM 商品 ...

    SQL Server 2008:T-SQL初学者指南(中文)

    **T-SQL**(Transact-SQL)是Microsoft SQL Server 的一种专有的SQL实现,它不仅包含了标准SQL的功能,还添加了许多增强功能,以支持更复杂的数据管理和事务处理需求。 #### 二、T-SQL基本对象 T-SQL的基本对象是...

    SqlServer数据库分页

    在SQL Server数据库中,分页是一种常见的数据检索技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这在处理大型数据集时尤其有用,可以提高性能,减少网络传输,以及提供更好的用户体验...

    数据库SQL SERVER2011

    在 SQL Server 2011 中,数据库管理员和开发人员需要掌握 SQL 查询语言,包括 SELECT、INSERT、UPDATE、DELETE 语句,以及视图、索引、存储过程、触发器等高级特性。此外,理解事务处理、备份和恢复策略、安全性管理...

    (高职)《SQL-Server数据库技术》期末考试卷综合测试题带答案2.doc

    * 选择题4:SQL 语言中,条件“年龄 BETWEEN 20 AND 30”表示年龄在 20 至 30 之间,且包括 20 岁和 30 岁 * 选择题5:为消除数据冗余,至少需要分解为 3 个表 * 选择题6:数据库中存放三个关系:学生(学号,姓名...

    sql server 分页大全

    在SQL Server数据库管理中,分页查询是一种常用的技术,它允许用户按页面浏览大量数据,而不是一次性加载所有结果。在大型数据库中,这可以显著提高性能,减少内存消耗,并提供更好的用户体验。本篇文章将深入探讨...

    SQLServer分页.rar

    本资源"SQLServer分页.rar"包含了一个名为"SQL分页.txt"的文件,里面详细讲解了SQL Server中的分页实现方法。 首先,我们来理解SQL Server分页的基本概念。分页通常涉及到两个关键参数:`OFFSET`和`FETCH NEXT`。`...

    SQL server 分页查询

    在SQL Server中,实现分页查询有多种方法,包括使用`ROW_NUMBER()`函数、`OFFSET`关键字以及传统的子查询方式等。 ### 使用`ROW_NUMBER()`函数进行分页 `ROW_NUMBER()`函数是在SQL Server 2005中引入的一个窗口...

Global site tag (gtag.js) - Google Analytics