代码之家  ›  专栏  ›  技术社区  ›  ev vk

  •  1
  • ev vk  · 技术社区  · 6 年前

    你好,我要在表中添加一个新列

      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
    

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

    1 回复  |  直到 6 年前
        1
  •  5
  •   gotqn user3521065    6 年前

    投给 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;
    

    enter image description here