Sql server 添加列-请改进我的代码

Sql server 添加列-请改进我的代码,sql-server,date-format,Sql Server,Date Format,对SQLServer来说,这是一个全新的概念。我试图找到一种方法来轻松地向表中添加新列。它只是获取一个现有的日期列,并给它一个不同的格式。我能让它工作的唯一方法是创建一个新表,然后删除旧表,并重命名新表。。肯定效率很低 Use [Manipulate MC BS] select*, CONVERT(date,[Time_stamp], 103) AS [Date Fixed] into [Website Interactions - Raw2] from [Website Interactio

对SQLServer来说,这是一个全新的概念。我试图找到一种方法来轻松地向表中添加新列。它只是获取一个现有的日期列,并给它一个不同的格式。我能让它工作的唯一方法是创建一个新表,然后删除旧表,并重命名新表。。肯定效率很低

Use [Manipulate MC BS]
select*,
 CONVERT(date,[Time_stamp], 103) AS [Date Fixed]
into [Website Interactions - Raw2]
from [Website Interactions - Raw]
drop table [Website Interactions - Raw]
Use [Manipulate MC BS]
Go
sp_RENAME 'Website Interactions - Raw2','Website Interactions - Raw'
Go
如何在不创建新表的情况下执行此操作

谢谢! 卢卡斯,你试过了吗

ALTER TABLE [Website Interactions - Raw]
ADD [Date Fixed] TIMESTAMP
(使用您需要的任何数据类型,我使用时间戳作为示例)

然后你可以做一些类似的事情:

UPDATE [Website Interactions - Raw]
SET [Date Fixed]=CONVERT(date,[Time_stamp], 103)
WHERE 1;
如果要更新所有行,则不需要最后一个
,其中1
。 如果只需要更新一些,请设置一个条件:
WHERE some\u column=some\u value

是的,这仍然是2个查询,但应该比将一个表复制到另一个表中,然后删除原始表并将新表重命名为旧表更有效

希望这有帮助。

你试过了吗

ALTER TABLE [Website Interactions - Raw]
ADD [Date Fixed] TIMESTAMP
(使用您需要的任何数据类型,我使用时间戳作为示例)

然后你可以做一些类似的事情:

UPDATE [Website Interactions - Raw]
SET [Date Fixed]=CONVERT(date,[Time_stamp], 103)
WHERE 1;
如果要更新所有行,则不需要最后一个
,其中1
。 如果只需要更新一些,请设置一个条件:
WHERE some\u column=some\u value

是的,这仍然是2个查询,但应该比将一个表复制到另一个表中,然后删除原始表并将新表重命名为旧表更有效

希望这有帮助。

你试过了吗

ALTER TABLE [Website Interactions - Raw]
ADD [Date Fixed] TIMESTAMP
(使用您需要的任何数据类型,我使用时间戳作为示例)

然后你可以做一些类似的事情:

UPDATE [Website Interactions - Raw]
SET [Date Fixed]=CONVERT(date,[Time_stamp], 103)
WHERE 1;
如果要更新所有行,则不需要最后一个
,其中1
。 如果只需要更新一些,请设置一个条件:
WHERE some\u column=some\u value

是的,这仍然是2个查询,但应该比将一个表复制到另一个表中,然后删除原始表并将新表重命名为旧表更有效

希望这有帮助。

你试过了吗

ALTER TABLE [Website Interactions - Raw]
ADD [Date Fixed] TIMESTAMP
(使用您需要的任何数据类型,我使用时间戳作为示例)

然后你可以做一些类似的事情:

UPDATE [Website Interactions - Raw]
SET [Date Fixed]=CONVERT(date,[Time_stamp], 103)
WHERE 1;
如果要更新所有行,则不需要最后一个
,其中1
。 如果只需要更新一些,请设置一个条件:
WHERE some\u column=some\u value

是的,这仍然是2个查询,但应该比将一个表复制到另一个表中,然后删除原始表并将新表重命名为旧表更有效


希望这有帮助。

将日期时间或日期数据类型保存为字符串(Varchar,Char)数据类型不是一个好的做法 但是,如果你真的想这样做,你可以这样做

ALTER TABLE TABLE_NAME
ADD NewColumn VARCHAR(10) DEFAULT CONVERT(date,GETDATE(), 103)
更新列

UPDATE TABLE_NAME
SET NewColumn = CONVERT(date,GETDATE(), 103)
我的建议

将数据存储在DATE或DATETIME中,如下所示

ALTER TABLE TABLE_NAME
ADD NewColumn DATE DEFAULT GETDATE()
同样,您需要更新表中现有记录的列


删除表并创建一个新表看起来更容易。但是,如果您在表上有任何外键或权限,则可能会遇到问题

将日期时间或日期数据类型保存为字符串(Varchar,Char)数据类型不是一种好的做法 但是,如果你真的想这样做,你可以这样做

ALTER TABLE TABLE_NAME
ADD NewColumn VARCHAR(10) DEFAULT CONVERT(date,GETDATE(), 103)
更新列

UPDATE TABLE_NAME
SET NewColumn = CONVERT(date,GETDATE(), 103)
我的建议

将数据存储在DATE或DATETIME中,如下所示

ALTER TABLE TABLE_NAME
ADD NewColumn DATE DEFAULT GETDATE()
同样,您需要更新表中现有记录的列


删除表并创建一个新表看起来更容易。但是,如果您在表上有任何外键或权限,则可能会遇到问题

将日期时间或日期数据类型保存为字符串(Varchar,Char)数据类型不是一种好的做法 但是,如果你真的想这样做,你可以这样做

ALTER TABLE TABLE_NAME
ADD NewColumn VARCHAR(10) DEFAULT CONVERT(date,GETDATE(), 103)
更新列

UPDATE TABLE_NAME
SET NewColumn = CONVERT(date,GETDATE(), 103)
我的建议

将数据存储在DATE或DATETIME中,如下所示

ALTER TABLE TABLE_NAME
ADD NewColumn DATE DEFAULT GETDATE()
同样,您需要更新表中现有记录的列


删除表并创建一个新表看起来更容易。但是,如果您在表上有任何外键或权限,则可能会遇到问题

将日期时间或日期数据类型保存为字符串(Varchar,Char)数据类型不是一种好的做法 但是,如果你真的想这样做,你可以这样做

ALTER TABLE TABLE_NAME
ADD NewColumn VARCHAR(10) DEFAULT CONVERT(date,GETDATE(), 103)
更新列

UPDATE TABLE_NAME
SET NewColumn = CONVERT(date,GETDATE(), 103)
我的建议

将数据存储在DATE或DATETIME中,如下所示

ALTER TABLE TABLE_NAME
ADD NewColumn DATE DEFAULT GETDATE()
同样,您需要更新表中现有记录的列


删除表并创建一个新表看起来更容易。但是,如果您在表上有任何外键或权限,则可能会遇到问题

我认为您应该添加一个计算列。它们不占用额外的存储空间,但允许您查看结果。该函数是表的“内置”,有点像在表中有一个视图。你可以读到他们

在您的情况下,您将执行以下操作:

ALTER TABLE
    ADD COLUMN [Date Fixed] AS CONVERT(date,[Time_stamp], 103);

这很方便。如果您在
[时间戳]
中添加新行或更改数据,
[固定日期]
的值将自动更改。

我认为您应该添加一个计算列。它们不占用额外的存储空间,但允许您查看结果。该函数是表的“内置”,有点像在表中有一个视图。你可以读到他们

在您的情况下,您将执行以下操作:

ALTER TABLE
    ADD COLUMN [Date Fixed] AS CONVERT(date,[Time_stamp], 103);

这很方便。如果您在
[时间戳]
中添加新行或更改数据,
[固定日期]
的值将自动更改。

我认为您应该添加一个计算列。它们不占用额外的存储空间,但允许您查看结果。该函数是表的“内置”,有点像在表中有一个视图。你可以读到他们

在您的情况下,您将执行以下操作:

ALTER TABLE
    ADD COLUMN [Date Fixed] AS CONVERT(date,[Time_stamp], 103);
这很方便。如果您在
[时间戳]
中添加新行或更改数据,
[固定日期]
的值将自动更改。

我认为您应该