SQL比较2个日期值(其中一个存储在varchar字段中,并且可能不包含Date数据)

合作社

我需要比较where子句中的日期值,即某个日期晚于另一个日期。出现的问题是我要比较的日期存储在varchar字段中。使事情变得更加复杂的是,简单的CONVERT将不起作用,因为存储在此varchar字段中的数据并不总是一个日期值,并且可以是任何旧版本(这是现有的数据库设计,很遗憾不能进行修改。代码。)

这是我目前拥有的一个粗略示例:

SELECT A.Value, B.Value, B.Value2
FROM Table A
JOIN Table B ON B.Id = A.Id
WHERE A.Value3 = 'Some String'
    AND ISDATE(B.GubbinsField) = 1 AND CONVERT(DATETIME, B.GubbinsField, 120) >= A.DateField

对于我如何成功检查这些值的问题,是否有人有潜在的解决方案?

马里

好了,您所走的路是正确的,所有要做的就是使比较运算符两侧的列数据类型相同。

当你做 CONVERT(DATETIME, B.GubbinsField, 120) >= A.DateField

基本上,您是将字符串值与日期时间值进行比较。由于更高的优先级,SQL Server将尝试将String转换为Datetime值。

您需要编写类似以下内容的查询...。

;WITH CTE 
 AS (
    SELECT A.Value ValueA
         , B.Value ValueB
         , B.Value2
         , A.DateField
         ,B.GubbinsField
    FROM Table A
    JOIN Table B ON B.Id = A.Id
    WHERE A.Value3 = 'Some String'
      AND ISDATE(B.GubbinsField) = 1 
    )
SELECT ValueA, ValueB, Value2
FROM CTE
WHERE CAST(GubbinsField AS DATETIME) >= DateField

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查字段包含数据,并且其中一个是数字

SQL:选择记录,其中一个字段中的值基于最新日期是唯一的

如何比较文档中的两个日期字段,其中一个被嵌入到数组中?

从2个字段中检索数据,其中一个计数

比较两个包含NaN的矩阵并屏蔽这两个矩阵中的元素值,其中至少其中一个包含NaN

挂载2个磁盘,其中一个磁盘为基础,并且该磁盘包含来自第一个磁盘的数据更改

Firebase Firestore:查询并获取在其中一个字段中包含查询值的文档

比较两个文件并替换其中一个文件中的值

如何比较 python 中的 2 个数组,其中一个列表包含另一个列表中的对象

更新mysql中的2个字段(其中一个更新为null更新)

从 sql 数据库中删除字段,其中日期是 C# 中的前一个日期到今天

显示单个_type中聚合的所有存储桶,其中一个索引包含具有相同字段名的多个_type

如果其中一个值包含使用php存储在表中的数字和字符串值,该如何创建条件?

SQL存储过程2个插入语句,其中一个插入需要1个选择

查询以联接2个表,并且仅保留其中一个表的1行

如果我有一个查询将SQL Server中的两个日期进行比较,如果其中一个日期为null,该怎么办?

Concat 2 数据帧并删除重复项 + 考虑将 NaN 值替换为来自其中一个数据帧的数据的日期和时间

大熊猫合并两个数据框,其中一个包含另一列的值

SQL / MS Access:在SQL表中添加一个自动更新的字段,其中包含来自另一个表的值的总和

合并两个结构相同的表,其中一个表具有优先级,并且按字段值排除

如何比较两个数据框并更新其中一个数据框中的特定列?

android从两个游标中获取数据,其中一个按日期列表排序

如何从Pandas数据框中检索一个记录序列,该记录序列在其中一列的末尾包含某个值?

合并2个数据框,其中一个数据框的值之间用逗号分隔

如何仅使用其中一个维度在2D向量中插入值?

比较上一年中一个日期的两个日期

比较 2 个颜色直方图,其中一个是从 txt 文件加载的

在Perl中,如何解析一个CSV文件,其中的字段包含逗号分隔的值?

Spark / Scala-比较数据框中的两列(当其中一个为NULL时)