Tsql 将文本数据类型字段转换为日期时间
我使用的是SQLServer2000,我的ERP供应商使用了一个文本数据类型字段来保存日期 日期如下: 6/21/2001 然而,其中一些是空白的 我尝试过使用类似于: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)) = '' 删除空白,但无效 即使我可以用看起来像日期的内容替换空格,我如
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的强制转换。我相信这会奏效。