首页 > 解决方案 > 在 T-SQL 中添加计算字段以将字符串值转换为日期

问题描述

我正在尝试将计算字段添加到 SSMS 中的现有表中,这会将格式YYYYMMDD中的字符串转换为日期格式,但我收到有关字符串字段无效的错误。

我需要计算字段,因为我在字符串字段中有“00000000”值(即 NULL),因此不能在日期计算中使用它。

我正在使用的代码是:

ALTER TABLE [TEM].[AssignmentRates] 
    ADD [Date_Expired] DATE NULL
    (SELECT CONVERT([date], CASE WHEN [Expiry_Date]='00000000' THEN NULL ELSE [Expiry_Date] END))

[Expiry_Date]我要转换的字符串列在哪里,是[Date_Expired]我要添加的计算列的名称。

我收到此错误:

列名“Expiry_Date”无效

针对该字段名称的两个实例,并且无法找出原因。如果我单独运行查询,SELECT它会返回所需的结果。

使用表别名或完整的数据库、表名和列名似乎也不起作用。

这可能是非常明显的事情,但我无法弄清楚它是什么。

标签: sql-serverssmscalculated-columns

解决方案


上的错误expiry_date似乎很清楚——那不是表中列的名称。但是您可以简化逻辑:

ALTER TABLE TEM.AssignmentRates ADD Date_Expired AS
    (TRY_CONVERT(date, Expiry_Date));

实际上,嵌套SELECT可能导致了问题。这通常不会用于计算列。


推荐阅读