我正在尝试使用子查询添加计算列,该查询将使用此查询将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
在这种情况下,不允许子查询。仅允许标量表达式
答案 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')