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无法成功连接到SQL Server数据库。这通常是因为缺少适当的驱动程序,即Java数据库连接(JDBC)驱动。在Kettle中,JDBC驱动是用于与各种...
在SQL Server的学习过程中,实践是提升技能的关键。"SQL Server练习50题"是一个非常实用的资源,旨在帮助用户巩固SQL Server的基础知识,特别是查询和多表查询这两方面的重要技能。下面将对这两个主题进行详细讲解。...
### SQL Server 存储层级数据实现无限级分类与左右值分类 #### 一、背景介绍 在处理具有层级关系的数据时,例如商品分类、组织架构等,传统的递归方法虽然直观,但在层级较深的情况下会导致性能问题。为解决这一...
文档中提到的条件包括等于“=”、不等于“”、大于“>”、BETWEEN范围查询、IN列表查询、LIKE模糊匹配以及组合条件的AND、OR逻辑运算。 3. 聚合函数与分组:文档提到了聚合函数的使用,这是SQL Server中用来对一组...
在SQL Server环境中,有时我们需要处理含有特殊字符的字符串,这些字符串可能是通过JavaScript的`escape`函数编码过的。JavaScript的`escape`函数用于编码URL、非ASCII字符和其他特殊字符,以便在网络上传输。当我们...
在日常工作中,我们经常需要将 SQL Server 数据库中的数据导出到 Excel 文件以便进一步分析或共享。然而,在执行这一操作时,可能会遇到错误代码 0x800A0E7A 和 0x80040154 的问题。这两个错误通常与 SQL Server ...
总之,处理SQL Server中的海量数据查询、分页和排序,需要综合运用各种技术和策略,包括但不限于索引优化、分区、数据压缩、查询重构以及执行计划监控。理解这些概念并灵活应用,将有助于提升系统性能,满足大数据...
6. BETWEEN操作符:在SQL中,BETWEEN用于表示一个范围,包含边界,所以"年龄 BETWEEN 15 AND 35"表示年龄包括15岁和35岁。 7. SQL语言特点:SQL是结构化查询语言,具备数据定义、查询、操纵和控制功能,是关系...
添加数据记录是 SQL Server 中的一种基本操作,它允许我们将新的数据记录添加到数据表中。常用的添加数据记录命令包括: * `insert into 数据表 (字段 1,字段 2,字段 3 …) values (值 1,值 2,值 3 …)` * `insert ...
下面我们将详细介绍 SQL Server 中的表数据操作,包括数据查询、数据分析、数据修改和数据优化等方面。 一、数据查询 数据查询是 SQL Server 中最基本也是最常用的操作之一。我们可以使用 SELECT 语句来查询表中的...
这里我们详细探讨一下SQL Server中的一些常用语句,包括创建表、插入记录、删除记录、修改数据、创建索引以及进行查询。 首先,创建表是数据库的基本操作。例如,创建一个名为`Student`的表,包含学生编号(Sno)、...
1. `SELECT * FROM 商品 WHERE 登记日期 between #2022/5/4 8:00:00# and #2023/2/5 17:30:00#;` 2. `SELECT 商品名称 FROM 商品 WHERE 登记日期 >= #2022/5/4 8:00:00#;` 3. `SELECT 商品名称,商品种类 FROM 商品 ...
在SQL Server中,时间函数是数据库管理中不可或缺的一部分,它们用于处理日期和时间数据类型,进行各种计算和转换。这篇博客“SQLSERVER时间函数汇总”深入探讨了SQL Server中的时间函数,提供了丰富的知识资源。 ...
**T-SQL**(Transact-SQL)是Microsoft SQL Server 的一种专有的SQL实现,它不仅包含了标准SQL的功能,还添加了许多增强功能,以支持更复杂的数据管理和事务处理需求。 #### 二、T-SQL基本对象 T-SQL的基本对象是...
在SQL Server数据库中,分页是一种常见的数据检索技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这在处理大型数据集时尤其有用,可以提高性能,减少网络传输,以及提供更好的用户体验...
在 SQL Server 2011 中,数据库管理员和开发人员需要掌握 SQL 查询语言,包括 SELECT、INSERT、UPDATE、DELETE 语句,以及视图、索引、存储过程、触发器等高级特性。此外,理解事务处理、备份和恢复策略、安全性管理...
* 选择题4:SQL 语言中,条件“年龄 BETWEEN 20 AND 30”表示年龄在 20 至 30 之间,且包括 20 岁和 30 岁 * 选择题5:为消除数据冗余,至少需要分解为 3 个表 * 选择题6:数据库中存放三个关系:学生(学号,姓名...
在SQL Server数据库管理中,分页查询是一种常用的技术,它允许用户按页面浏览大量数据,而不是一次性加载所有结果。在大型数据库中,这可以显著提高性能,减少内存消耗,并提供更好的用户体验。本篇文章将深入探讨...
本资源"SQLServer分页.rar"包含了一个名为"SQL分页.txt"的文件,里面详细讲解了SQL Server中的分页实现方法。 首先,我们来理解SQL Server分页的基本概念。分页通常涉及到两个关键参数:`OFFSET`和`FETCH NEXT`。`...
在SQL Server中,实现分页查询有多种方法,包括使用`ROW_NUMBER()`函数、`OFFSET`关键字以及传统的子查询方式等。 ### 使用`ROW_NUMBER()`函数进行分页 `ROW_NUMBER()`函数是在SQL Server 2005中引入的一个窗口...