Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server中的字符串转换日期和/或时间_Sql_Sql Server - Fatal编程技术网

从SQL Server中的字符串转换日期和/或时间

从SQL Server中的字符串转换日期和/或时间,sql,sql-server,Sql,Sql Server,我创建了一个视图,部分代码如下所示: , IIF (ownedbyteamt = 'Validation' AND (titlet LIKE '%Build validation%' OR titlet LIKE '%OP Build%'), CAST(closeddatetimet AS NVARCHAR(255)), '-1111111') AS 'OP_Build_Validation' ,( CASE

我创建了一个视图,部分代码如下所示:

, IIF (ownedbyteamt = 'Validation' 
       AND (titlet LIKE '%Build validation%' 
            OR 
            titlet LIKE '%OP Build%'),
       CAST(closeddatetimet AS NVARCHAR(255)), '-1111111') AS 'OP_Build_Validation'
,( 
CASE 
   WHEN cher.[Max_OP Build Validation] <> -111111 
        AND cher.max_cf <> -111111 
        AND cher.max_cf >= cher.max_op_build _validation 
      THEN DATEDIFF(DAY, CONVERT(DATE, cher.max_cf), CONVERT(DATE, cher.max_op_build_validation)) 
      ELSE '07/07/1777' 
END) AS 'Days-Cf'
然后,我在与表的联接中使用了此视图,其中的代码如下所示:

, IIF (ownedbyteamt = 'Validation' 
       AND (titlet LIKE '%Build validation%' 
            OR 
            titlet LIKE '%OP Build%'),
       CAST(closeddatetimet AS NVARCHAR(255)), '-1111111') AS 'OP_Build_Validation'
,( 
CASE 
   WHEN cher.[Max_OP Build Validation] <> -111111 
        AND cher.max_cf <> -111111 
        AND cher.max_cf >= cher.max_op_build _validation 
      THEN DATEDIFF(DAY, CONVERT(DATE, cher.max_cf), CONVERT(DATE, cher.max_op_build_validation)) 
      ELSE '07/07/1777' 
END) AS 'Days-Cf'
,(
案例
当cher.[Max_OP Build Validation]-111111
和cher.max_cf-111111
和cher.max\u cf>=cher.max\u op\u构建验证
然后是DATEDIFF(DAY,CONVERT(DATE,cher.max\u cf),CONVERT(DATE,cher.max\u op\u build\u validation))
ELSE'07/07/1777'
结束)作为“天Cf”
现在,我得到了这个错误:

从字符串转换日期和/或时间时,转换失败

我做错了什么


感谢

A
case
表达式返回指定类型的单个值

您有一个
then
子句,它返回一个
datediff()
。这是一个整数

您有一个返回字符串的
else
子句


当存在不同的类型时,SQLServer使用类型转换规则来确定要执行的操作。在本例中,它尝试将所有内容转换为整数,但您会得到一个错误。

如何修复它@戈登Linoff@nina_dev没有人可以建议任何更正,因为没有人知道您的模式,也没有人知道您试图实现什么。您的第一个错误是将closedatetimet转换为nvarchar,并在逻辑计算为TRUE时存储一个完全虚假的值。这种选择现在会导致视图使用中的问题。您首先需要架构方面的帮助-所有在字符串和日期之间转换列的行为都表明存在重大的设计问题。@nina\u dev。使用示例数据、所需结果和要实现的逻辑说明提出新问题。列必须具有相同的类型。在这种情况下,一个分支返回
INT
。另一个是返回
VARCHAR
。下定决心吧。