Sql server 更改表格添加位列,视情况而定

Sql server 更改表格添加位列,视情况而定,sql-server,tsql,calculated-columns,alter,Sql Server,Tsql,Calculated Columns,Alter,您好,我正在向表中添加一个新列 ALTER TABLE MyTable ADD Active AS CASE WHEN EndDate < getdate() then 0 ELSE 1 END ALTER TABLE MyTable ADD Active AS CASE当EndDate

您好,我正在向表中添加一个新列

  ALTER TABLE MyTable ADD  Active  AS    CASE WHEN EndDate < getdate() then 0 ELSE 1 END
ALTER TABLE MyTable ADD Active AS CASE当EndDate
如何将列设置为一个位?因为默认情况下它是一个int32。 我试着用这个

ALTER TABLE MyTable ADD  Active BIT AS    CASE WHEN EndDate < getdate() then 0 ELSE 1 END
ALTER TABLE MyTable在EndDate

因为一些答案。然而,这似乎不是我正在做的一件好事

将其转换为

CREATE TABLE dbo.MyTable
(
    EndDate datetime2
);

ALTER TABLE MyTable 
ADD  Active AS  CAST(CASE WHEN EndDate < getdate() then 0 ELSE 1 END AS BIT)

SELECT c.name
      ,t.[name]
FROM sys.[columns] c
INNER JOIN sys.[types] t
    ON c.[system_type_id] = t.[system_type_id]
WHERE object_id = OBJECT_ID ('dbo.MyTable')

DROP TABLE dbo.MyTable;
创建表dbo.MyTable
(
结束日期日期时间2
);
更改表MyTable
添加活动铸态(EndDate