alter table 添加位列作为 case when

alter table add bit column as case when

您好,我要在我的 table

中添加一个新专栏
  ALTER TABLE MyTable ADD  Active  AS    CASE WHEN EndDate < getdate() then 0 ELSE 1 END

如何将列设置为一点? 因为默认情况下它是一个 int32。 我尝试的是使用这个

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

因为一些 Whosebug 的回答。然而,我正在做的事情似乎不是一个好的方法。

投射到 BIT:

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;