alter table添加位列时的情况

ev *_* vk 1 t-sql sql-server calculated-columns alter

您好我要在我的表中添加一个新列

  ALTER TABLE MyTable ADD  Active  AS    CASE WHEN EndDate < getdate() then 0 ELSE 1 END
Run Code Online (Sandbox Code Playgroud)

如何将列设置为有点?因为默认情况下它是一个int32.我试过的就是用它

ALTER TABLE MyTable ADD  Active BIT AS    CASE WHEN EndDate < getdate() then 0 ELSE 1 END
Run Code Online (Sandbox Code Playgroud)

因为一些stackoverflow答案.然而,我正在做的事似乎不是一个好的方法.

got*_*tqn 5

把它投到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;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述