在 SQL where 子句中使用带有 IsDate 的 case 语句

2024-05-06

我正在尝试清理以下代码中的 where 子句语句:

SELECT
    CONVERT(datetime, [UTC_Time_Stamp], 127) AS TimeStamp
FROM 
    Table 
WHERE 
    CASE 
       WHEN ISDATE([UTC_Time_Stamp]) = 1 
       THEN CONVERT(datetime, [UTC_Time_Stamp], 127) 
       ELSE CAST('1/1/1900' AS datetime) 
    END > CAST('11/09/2012' AS datetime) 
    AND 
       CASE 
          WHEN ISDATE([UTC_Time_Stamp]) = 1 
          THEN CONVERT(datetime, [UTC_Time_Stamp], 127) 
          ELSE CAST('1/1/3000' AS datetime) 
       END < CAST('11/10/2012' as datetime) 
ORDER BY 
    TimeStamp;

UTC_Time_Stamp存储为字符串,有时为空。我之前在 where 子句中遇到了转换错误。我按照这个问题的建议修复了错误here https://stackoverflow.com/questions/6944116/sql-server-where-clause-where-value-is-convertible,但我觉得必须有一种更简单的方法来达到相同的结果。


You need在a内进行转换case陈述。 SQL是一种描述性语言,不保证处理的顺序。所以,一个where子句不一定发生在其他处理之前,即使它位于子查询或 CTE 中。然而,SQL 确实保证了处理的顺序case语句(不包含具有聚合函数的表达式)。

您可以使用子查询来简化语句:

select TimeStamp
FROM (select t.*,
             Case When ISDATE([UTC_Time_Stamp]) = 1 Then CONVERT(datetime, UTC_Time_Stamp, 127) end) as TimeStamp
      from Table t
     ) t
WHERE coalesce(TimeStamp, cast('1/1/1900' as datetime)) > cast('11/09/2012' as datetime) and
      coalesce(TimeStamp, cast('1/1/3000' as datetime)) < cast('11/10/2012' as datetime) 
ORDER BY TimeStamp;

这会将有效值转换为时间戳。然后您可以在外部查询中使用该变量。

我还鼓励您习惯 ANSI 标准日期格式(YYYYMMDD 或 YYYY-MM-DD),而不是像“11/10/2012”这样不明确的格式。您可能清楚这意味着 2012-11-10 。 。 。或者是2012年10月11日。 。 。但格式不明确。

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

在 SQL where 子句中使用带有 IsDate 的 case 语句 的相关文章

  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • MySQL LIKE %string% 不够宽容。我还有什么可以用的吗?

    我有一位客户询问他们的搜索是否可以搜索公司名称 这些名称可以根据用户输入以多种格式进行搜索 例如数据库中存储的公司是 A J R Kelly Ltd 如果用户搜索 一个 J R Kelly 被发现 使用
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • Extbase - 从查询中获取创建的sql

    我想从我的typo3 扩展中获取一些数据库表 该扩展基于 extbase 查询总是不返回任何内容 但数据存在 我试过这个 query this gt createQuery query gt statement SELECT FROM my
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 使用 .NET 中的类型化数据集将 SQL 参数传递给 IN() 子句

    首先道歉 因为该网站上有类似的问题 但没有一个直接回答这个问题 我在 VS 2010 中使用类型化数据集 我在数据集中创建一个 TableAdapter 查询如下 SELECT from Table WHERE ID IN IDs 现在如果
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 如何连续添加起始行和下一行的值

    我只想创建一个 sql 查询 结果就像图片上的那样 类似于 SQL 中的斐波那契数列 Ex Column 1 10 则 Result 列的值为 Result 10 因为这是第一行 然后假设column1第二行的值为50 那么Result第二
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • Snowflake 中的动态 SQL

    当我在雪花中运行动态 SQL 时 遇到以下错误 未完成对 SQL MAIN 的分配 因为值超出了变量的大小限制 它的大小是263 限制为 256 内部存储大小以字节为单位 这是代码 SET v G 1 SET v G1 v G VARCHA
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • 更好地理解 SQL Server 中的架构

    就像标题一样 我还是一个SQLServer菜鸟 当我创建表 Mytable 时 数据库中显示 dbo Mytable 但有人能让我更好地理解模式吗 另外 在 Server 2008 TSQL 一书中 Itzik 说 在你的数据库中 表属于模
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • Oracle:按月分区表

    我的解决方案 德语几个月 PARTITION BY LIST to char GEBURTSDATUM Month PARTITION p1 VALUES JANUAR PARTITION p2 VALUES Februar PARTITI
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013

随机推荐

  • 我可以将 UIScrollView 放入另一个 UIScrollView 中吗

    我有一个UIScrollView仅在垂直方向滚动 我需要放置UIScrollView它可以水平移动 就像苹果设备中的AppStore应用程序一样 我不想我们UICollectionView因为我有静态数据并且我只需 3 个水平UIScrol
  • Window.AllowsTransparent 设置为 true 时 wpf 中的运行时错误

    当我设置时 我在运行时抛出异常AllowsTransparency True 我得到一个例外 说WindowStyle不能设置为None if AllowsTransparency设置为 true 即使我明确地说WindowStyle被设定
  • LINQ:根据列值选择重复行

    我试图在我的 DataGrid 中显示那些共享相同列值的行 例如 对于具有相同姓氏的人 我尝试了以下方法 dataGrid ItemsSource dataContext Addresses GroupBy a gt a SurName W
  • 将 fill_ Between() 与 Pandas 数据系列一起使用

    我已经绘制了 使用 matplotlib 时间序列及其相关的置信区间上限和下限 我在 Stata 中计算的 我使用 Pandas 读取 stata csv 输出文件 因此该系列的类型为 pandas core series Series M
  • 我们如何读取给定时间范围内的Kafka主题?

    我需要读取 Kafka 主题中给定时间范围内的消息 我能想到的解决方案是首先找出时间范围开始的最大偏移量 然后继续消费消息 直到所有分区上的偏移量超过时间范围的末尾 有没有更好的方法来解决这个问题 谢谢 好吧 您肯定必须首先搜索适合时间范围
  • PyCharm matplotlib 交互式图形而不阻塞执行

    我阅读了很多有关该主题的堆栈溢出问题 但经过大量实验后我无法弄清楚我的问题 我在 Windows 7 上使用 PyCharm 2016 3 2 但在 OSX 上也有同样的问题 我的解释器是带有 Python 3 6 和 matplotlib
  • 如何在IOS中自定义键盘[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在我的应用程序中为 IOS 创建
  • 阻止 WKWebView 中加载的 url 中的广告

    我正在 webView 中加载 url 现在我想阻止 webView 中的 url 中的广告 我怎样才能实现这个目标 webVw loadRequest NSURLRequest requestWithURL NSURL URLWithSt
  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一
  • 将 android-sdk 和 sdk 文件夹移动到另一个驱动器

    我的 Windows 位于 128GB SSD 硬盘上 但空间不足 文件夹C Users User AppData Local Android有 2 个文件夹android sdk and sdk使用约 30GB 空间的文件夹 是否可以将这
  • Java 类路径和相对路径

    如果java类路径中有相对路径 那么这是否只是搜索当前工作目录 对于清单文件中声明的类路径也是如此 在清单文件中 它是相对于 jar 所在的目录吗 前任 命令行 java cp somejar jar Or Manifest Class P
  • 如何向 Visual Studio Intellisense 添加按钮

    我想在 Visual Studio 的 IntelliSense 返回的选项列表的顶部添加一个按钮 单击该按钮时 将执行我的自定义代码 这将导致出现弹出窗口 我将其称为 按钮 因为当用户单击该项目时 我希望出现一个弹出窗口 而不是完成用户输
  • 如何从解析迅速检索音频文件

    我已成功将音频文件保存到 Parse 但很难再次下载它 我无法弄清楚 getDataInBackgroundWithBlock 的块应该是什么 以及如何实际保存文件 非常感谢任何帮助 let query PFQuery className
  • __init__ 的正确类型注释

    什么是正确的类型注释 init python 中的函数 class MyClass 以下哪一项更有意义 def init self type None gt None def init self type MyClass gt MyClas
  • 添加一个新列,其中标签附加到新月形数字

    我想添加一个新列 给出一个常量标签 并逐行附加新月数字逻辑 我的输入 position work chr1 jil2001 chr4 jil2001 chr3 kou2009 chr9 nai2012 chr7 fandis2005 我的预
  • Pandas MultiIndex 按分类顺序自定义排序级别,而不是按字母顺序

    我是 Pandas 0 16 1 的新手 并且希望在多索引中进行自定义排序 因此我使用分类 我的多重索引的一部分 Part Defect Own 504 504 504 505 506 507 530 530 530 我创建了具有多索引级别
  • javascript中映射对象的字符串

    var map new Map map set key1 value1 map set key2 value2 console log map console log map toString console log JSON parse
  • 使用 XSLT(即 XML Transformer)时防止 DTD 下载

    我必须在 Java 中处理具有 DTD 和 XSLT 的 XML 文件 DTD 确实是必要的 因为它包含我使用的实体的定义 旁白 是的 将实体用于可以使用 unicode 的东西是一个坏主意 当我运行转换时 它每次都会从外部源下载 DTD
  • 如何在悬停时向表 tr 元素添加框阴影? [复制]

    这个问题在这里已经有答案了 所以我试图在我的桌子上添加一个盒子阴影tr悬停时的元素 目前 它在 Firefox 中运行良好 但在其他浏览器中则不然 CSS table tbody tr hover background color 1332
  • 在 SQL where 子句中使用带有 IsDate 的 case 语句

    我正在尝试清理以下代码中的 where 子句语句 SELECT CONVERT datetime UTC Time Stamp 127 AS TimeStamp FROM Table WHERE CASE WHEN ISDATE UTC T