Tsql 将文本数据类型字段转换为日期时间

Tsql 将文本数据类型字段转换为日期时间,tsql,sql-server-2000,Tsql,Sql Server 2000,我使用的是SQLServer2000,我的ERP供应商使用了一个文本数据类型字段来保存日期 日期如下: 6/21/2001 然而,其中一些是空白的 我尝试过使用类似于: select coalesce(nullif(fdelivery, ''), '1/1/1900') FROM sorels 删除空白,但没有用 我也试过: case when ltrim(rtrim(SOR.fdelivery)) = '' 删除空白,但无效 即使我可以用看起来像日期的内容替换空格,我如

我使用的是SQLServer2000,我的ERP供应商使用了一个文本数据类型字段来保存日期

日期如下:

6/21/2001

然而,其中一些是空白的

我尝试过使用类似于:

select coalesce(nullif(fdelivery, ''), '1/1/1900') FROM sorels 
删除空白,但没有用

我也试过:

case 
        when ltrim(rtrim(SOR.fdelivery)) = ''
删除空白,但无效


即使我可以用看起来像日期的内容替换空格,我如何将字段转换或强制转换为datetime(来自文本),以便我的报告程序知道它实际上是一个日期字段而不是文本

我已经有一段时间没有使用SQL Server 2000了,但是如果
ISDATE
函数可用,您可以这样使用它:

SELECT CAST((CASE WHEN ISDATE(CAST(fdelivery as varchar(20)) = 0 THEN '1-1-1900' ELSE CAST(fdelivery as varchar(20)) END) AS datetime) 
FROM sorels
啊,我找到了一个方法:

select 
Case
when isdate(SUBSTRING(fdelivery, 1,11)) = 1
then cast(SUBSTRING(fdelivery, 1,11) as datetime)
else cast('1/1/1900' as datetime)
end
as DateConvert
from sorels

这会奏效的。它将文本字段的日期“部分”替换为子字符串,我想这会隐式地将其转换为一个Char数据类型,然后我可以将其转换为datetime。

我应该提到我已经尝试过了。不能在文本数据类型字段上使用isdate。无论如何,谢谢。我编辑了我的答案,加入了对varchar的强制转换。我相信这会奏效。