日期之间的 T-SQL 混淆

2024-01-29

我正在 SQL Server 2000 中使用 T-SQL,并且有一个表TRANSACTIONS其中有一个日期列TRANDATE定义为 DateTime,以及与此问题无关的许多其他列。

该表填充了跨越多年的交易。我遇到了代码、测试,这让我很困惑。有一个简单的SELECT, 像这样:

SELECT TRANDATE, RECEIPTNUMBER FROM TRANSACTIONS WHERE TRANDATE BETWEEN '12/01/2010' and '12/31/2010' ORDER BY TRANDATE

并且它没有返回我知道该表中的两行数据。

通过上面的语句,它返回的最后一行按顺序有一个TRANDATE的: 2010-12-31 00:00:00.000

当我修改如下语句时,我得到了该表中 2010 年 12 月的额外两行:

SELECT TRANDATE, RECEIPTNUMBER FROM TRANSACTIONS WHERE TRANDATE BETWEEN '12/01/2010 00:00:00' and '12/31/2010 23:59:59' ORDER BY TRANDATE

我试图找出为什么BETWEEN使用第一个运算符时,运算符不包含 2010 年 12 月 31 日的 24 个期间的所有行SELECT, 多于。为什么需要将明确的时间添加到SELECT语句如第二个修改后的语句中所示,以使其提取正确的行数?

是因为方式的原因吗TRANDATE定义为“DATETIME"?

基于这一发现,我认为将不得不遍历所有这些旧代码,因为这些BETWEEN操作员遍布在这个旧系统中,看起来它没有正确提取所有数据。我只是想先从一些人那里得到澄清。谢谢!


日期是一个时间点,而不是一个时间跨度。

'12/31/2010'也是一个要点。也就是说,现在是 12 月 31 日午夜。
此后发生的所有事情都将被忽略。
这正是您想要的行为(即使您还没有意识到)。

不要认为当您选择省略时间部分时,它会被神奇地假定为"any"。这将是"all zeroes",即午夜。

如果您想在查询中包含一整天而不必指定23:59:59(顺便说一句,不包括当天的最后一秒 https://stackoverflow.com/questions/5434001/t-sql-between-dates-confusion#comment6152634_5434001, 在。。之间moment 23:59:59当日和moment 00:00:00第二天),您可以通过使用严格的不等式来做到这一点(>, <)以您的第一个时间点为界don't want:

WHERE TRANDATE >='12/01/2010 00:00:00' and TRANDATE < '01/01/2011'

或通过比较转换为的日期值DATE:

WHERE CAST(TRANDATE AS DATE) between '12/01/2010' and '12/31/2010'

(可以将这种类型的演员放入WHERE条款,它是可控制的 https://dba.stackexchange.com/q/34047/5203).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日期之间的 T-SQL 混淆 的相关文章

  • 如何在 T-SQL 中删除默认值或类似约束?

    我知道语法 ALTER TABLE TheTable DROP CONSTRAINT TheDefaultConstraint 但是当我不知道默认约束的名称时如何删除它 也就是说 它是在CREATE TABLE time 您可以使用此代码自
  • 如何通过T-SQL在SQL Server 2008中创建计划作业?

    我想创建一个作业 在一段时间过去后从数据库中删除记录 例如我在新闻表中有一个字段Time Stamp每个月都会有一个 SQL 查询像计划作业一样针对我的数据库运行 并删除时间戳为两个月前的新闻 一般来说 我想删除两个月前或更早的新闻 以免我
  • 使用 TSQL 解压缩值

    如何解压缩存储过程中的 varbinary max 值 我想在 TSQL 代码中实现或调用gunzip 算法 最好不启用 CLR 调查 sp OACreatehttp msdn microsoft com en us library ms1
  • 检查数据库是否存在并且当前登录可以访问

    我知道我可以使用 检查数据库是否存在 SELECT FROM sys databases WHERE name database name or SELECT DB ID database name 无论当前登录是否有权访问 都可以执行此检
  • 在SQL Server 2012 TSQL中,使用XML RAW、XML AUTO和XML PATH有什么区别

    正如标题所示 欢迎所有开放的思想 我在我的电脑上测试了一下 输出似乎是一样的 例如 USE BOB DATABASE SELECT ID Name First Name Last Name FROM DBO T User FOR XML A
  • SQL SELECT 以前的 MMYY 作为 varchar(4)

    最亲爱的 StackOverflow 天才朋友们 我需要创建一个视图 该视图始终在 期间 的 WHERE 子句中为我提供查找上个月和上一年的数据 MMYY 采用 varchar 4 格式 示例 今天是 2015 年 3 月 3 日 所以我需
  • 如何在 Linq 中执行 SQL Like %?

    我有一个 SQL 过程 我试图将其转换为 Linq SELECT O Id O Name as Organization FROM Organizations O JOIN OrganizationsHierarchy OH ON O Id
  • varchar 变量的字符串比较失败

    我无法理解为什么会得到以下结果 declare myVar1 varchar Friday declare myVar2 varchar 10 Friday select case when myVar1 Friday then yes e
  • 计算和合并行

    我有一个表 通过将国家 地区代码添加到每行的 国家 地区代码 列来记录 Web 应用程序中的用户位置 每行代表对特定区域的访问 所以我有一些数据 比如 COL1 COL2 COL3 countrycode asd asd asd NZ as
  • 如何从单行创建多行 - 规范化表

    我对 SQL 很陌生 并试图弄清楚这一点 我有一个名为 BUDGET 的表 其中包含一年中每个月的 12 列 显示该月的预算余额 所以表格看起来像这样 Department Year Month1 Month2 Month12 ABCD 2
  • 将上一行值减去当前行

    我有下表 id value acc no 1 12 1 2 14 1 3 15 1 4 10 2 5 16 2 6 19 1 7 7 3 8 24 2 预期产出 id value acc no result 1 12 1 12 curren
  • SQL 从一列到另一列搜索字符串

    以前可能有人问过这个问题 但我不知道如何搜索它 我想查找 Column2 中的字符串是否是 Column1 的一部分 或者根本没有在 Column1 中使用 Column1 Column2 ABCDE JKL XC XC PQ A XYZ
  • 使用nodes()方法在SQL中展平分层XML

    我有一个存储过程 它采用 XML 文档作为参数 其结构类似于以下内容
  • 将开始列和结束列合并为一列

    我已经上下搜索了好几个星期 试图找到解决我的问题的方法 我的问题如下 A 有一个表格 其中包含来自车辆遥测提供商的开始和结束坐标以及日期 我需要将它们合并到一列中 以便我们的报告解决方案能够绘制它们 一些示例数据如下 DECLARE Tbl
  • 从 SQL Server 中的字符串中提取子字符串

    我需要从字符串中提取子字符串的一部分 如下所示 YY 12 Yellow ABC WSA Thisone A SS 4MON DHHE A A 我需要按如下方式提取字符串 Yellow Thisone DHHE 你可以使用这样的东西 dec
  • 我应该设计一个 SQL Server 数据库来依赖 UNION 还是避免它?

    执行以下 SQL 查询 SELECT Account Amount AS Deposit 0 00 AS Withdrawal Date FROM Deposits WHERE Account Account UNION SELECT Ac
  • SQL WHERE 语句?

    如果我想返回 A 列为 null 或 B 列为 null 的行 但不返回两者都为 null 的行 那么我的 WHERE 子句应该在 SQL 语句中是什么 WHERE ColA is NULL AND ColB is NOT NULL OR
  • Azure 流分析:如果作业查询是按天计算的 TUMBLINGWINDOW,流分析作业何时实际处理数据?

    Context 我使用 Azure 门户创建了一个流作业 该作业使用每日 TUMBLINGWINDOW 聚合数据 下面附加了一个从文档修改而来的代码片段 它显示了类似的逻辑 SELECT DATEADD day 1 System Times
  • 搜索并替换字符串 t-SQL

    每个人我都试图编写一个查询来替换末尾出现的所有字符串 我有一些干扰词 确切地说是 104 个 如果它们出现在字符串末尾 则需要将其从字符串中删除 例如 两个干扰词是 Company LLC 以下是一些示例和预期输出 American Com
  • 将一行字段设置为其他 2 个字段的乘积

    我有一个这样的SQL表结构 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 7 4 25 4 1 6 5 26 5 2 10 5 26 6 3 8 3 26 我想写一个脚本 它将更新所有B 和 C 列在行中A 3

随机推荐

  • low_memory 和 memory_map 标志在 pd.read_csv 中做什么

    的函数签名pandas read csv除其他外 还提供以下选项 read csv filepath or buffer low memory True memory map False iterator False chunksize N
  • 如何使用 C# 使键盘按钮消息文本与其 Telegram bot API 中的标题不同

    我需要我的机器人打印与其标题不同的消息 由电报客户端在键盘按钮元素上显示 我的自定义按钮有这样的文字 Where am I 当我点击它时 它会打印在屏幕上 Where am I 还 我想要打印按钮 location 与它不同的东西text
  • 在 iPython 中使用 HDF5 文件时出现异常“HDFStore 需要 PyTables”

    我对 Python 非常陌生 正在尝试使用 HDFStore 在 pandas 中创建一个表 如下所示 store HDFStore store h5 我得到例外 Exception Traceback most recent call l
  • 使用 Google Apps 脚本 API 访问其他用户

    我对此真的很困惑 我想使用 Gmail API 使用 google apps 脚本访问和发送另一个帐户中的邮件 我已在高级 Google 服务中启用 Gmail 并在控制台上启用 API 当我使用 me 值时 以下代码有效 但当我为另一个用
  • Jest/Typescript:在 jest 和 Typescript 中包含私有成员的模拟类依赖项

    上下文 我有依赖于类 A 的类 B 我想测试类 B 的方法 该方法在内部调用类 A 的方法 现在 我想通过模拟类 A 对类 B 的方法进行单元测试 Note 1 A 类有一些私有成员 Note 2 A类没有接口 这是我的代码结构 class
  • 错误:无法打开文件“Info.plist”,因为没有该文件

    我已将我的项目从另一台安装了最新 Xcode 的计算机上移走 但现在当我运行项目时它给我错误 Info plist 0 错误 读取数据 文件 Info plist 无法 打开 因为没有这样的文件 以前的项目运行没有问题 但现在在新系统项目上
  • Slick 3.0.0 自动增量复合键

    我有一个表结构如下 Table1 id Int name String version Int 该表相应的 Slick 表示形式为 class Table1 tag Tag extends Table Int String Int tag
  • 在表单之间翻转时如何保留表单的控制值

    需要两种形式才能输入特定交易的所有信息 我希望能够在这两个表单之间来回翻转 保留在每个表单上输入的内容 直到单击 保存 按钮 我想我应该能够使用 Form2 Show Me Hide 然后使用 Form1 Show Me Hide 我第一次
  • Delphi TThread.CurrentThread 和 EAccessViolation - 这是一个错误还是我的无能..?

    在 Delphi 2009 中 我发现每当我在应用程序中使用 TThread CurrentThread 时 应用程序关闭时我都会收到如下错误消息 Exception EAccessViolation in module ntdll dll
  • 努力解析(bash)时间命令

    我正在努力解析 bash 中 time 命令的输出 甚至在我调用它时阻止它打印输出 这是我的测试代码 bin bash TIME time ls lh gt dev null echo Testing echo TIME 目前打印出 bla
  • 列出具有重复项的并集

    我需要在 Python3 中合并两个列表 其中可以存在重复项 并且对于其中一组 结果列表将在两个列表中包含与 max 一样多的列表 一个示例可能会澄清这一点 1 2 2 5 some operator 2 5 5 5 9 1 2 2 5 5
  • 单声道的代码合同?

    单声道支持吗代码合约 http msdn microsoft com en us devlabs dd491992 IE 如果我构建一个类库 单声道用户可以使用我的程序集吗 如果没有 有其他库吗 最好支持静态分析 通过 Visual Stu
  • .NET 4 控制不带 Blend 的默认模板

    当人们无法使用 Expression Blend 时 如何找到 NET 控件的默认模板 到目前为止 当我需要 WPF 控件的模板时 我会访问 Codeplex 上的 WPF 项目页面 浏览源代码 通常会在 Generic xaml 文件中找
  • 升级到ubuntu-16.10后pip无法使用

    与 pip 一起运行命令会出现以下错误 甚至命令 pip V 产生以下错误 我读到该错误是由于 setuptools 版本 31 0 0 造成的 它应该低于 28 0 0 但我的setuptools的版本是26 1 1 它仍然给出同样的错误
  • 对“std::istreambuf_iterator”的使用感到困惑

    以下是来自 cppreference com 的示例 http en cppreference com w cpp iterator istreambuf iterator The Code is include
  • 替换 Intellij 中多个源文件中所有出现的字符串

    是否可以 最好有 2 个选项 1 有变量 2 其他字符串 谢谢 是的 这是可能的 该命令名为 在路径中替换 在我的键盘快捷键首选项中为 Ctrl Shift R 您可以通过键入 Ctrl shift A 并键入 replace 来自己找到它
  • 在 PHP 中,为什么 true 转换为 1 而 false 转换为空字符串?

    布尔 TRUE 值转换为字符串 1 布尔值 FALSE 转换为 空字符串 为什么 FALSE 不转换为 0 如果你先转换为 int 然后转换为字符串 它会打印 0 x false print string int x 打印 0 当然 您可以
  • jQuery 用 div 包裹多个 id

    我试图用 div 包装选定的 id 集 并用不同的 id 包装其他集 但不太确定它应该如何工作 我有以下 html 代码 div class wrapper div div class post div div div div class
  • 同时快速读取/写入 int 数组

    我需要一种快速的方法来同时读取 写入 int 数组 每个索引都需要写入 读取操作仅需要 所有写入完成后完成数组 我从同步版本开始 public final class SynchronizedIntArray private final i
  • 日期之间的 T-SQL 混淆

    我正在 SQL Server 2000 中使用 T SQL 并且有一个表TRANSACTIONS其中有一个日期列TRANDATE定义为 DateTime 以及与此问题无关的许多其他列 该表填充了跨越多年的交易 我遇到了代码 测试 这让我很困