MS SQL Server-使用子查询添加计算列

时间:2019-02-04 09:46:29

标签: sql sql-server azure calculated-columns

我正在尝试使用子查询添加计算列,该查询将使用此查询将Unix时间戳转换为常规DateTime格式,但是有错误。 使用Azure SQL Server。

ALTER TABLE dbo.FP_Contacts_CRM 
    ADD DWH_propertieslastmodifieddatevalue 
        AS (SELECT DATEADD(S, CONVERT(INT, LEFT(propertieslastmodifieddatevalue, 10)), '1970-01-01')
            FROM dbo.FP_Contacts_CRM)

我收到此错误:

  

1046级15状态1行12
  在这种情况下,不允许子查询。仅允许标量表达式

2 个答案:

答案 0 :(得分:3)

您不能对计算列使用子查询。相反,只需给出公式即可。

alter table dbo.FP_Contacts_CRM 
add DWH_propertieslastmodifieddatevalue as 
    (
        DATEADD(S, 
                    CONVERT(int,LEFT(propertieslastmodifieddatevalue, 10))
                    , '1970-01-01')
    )

答案 1 :(得分:2)

如错误所述,计算列声明不允许子查询。

但是对于原始问题,您可以使用如下所示的使用标量函数。

DATEADD(S, CONVERT(int,LEFT(<yourdtcolumn>, 10)), '1970-01-01')