2017-07-06 59 views
0

我需要将插入(我将恢复到我的source_database中的每月备份)到dest_database中,并添加一个新的DATE字段,以指出哪个月是数据从。所以最后一切都将在dest_database中,DATE字段指定它属于哪个月份。从现有表插入到新表中并添加新字段

我该怎么做?

INSERT INTO dest_table 
(SELECT * 
FROM source_table) 
+0

使用一个月(GETDATE())来获取月份 – Nithin

回答

2

您需要指定列名并添加额外的列。

请参阅下面的sql中的new_date_col1

INSERT INTO dest_table (old_col1, old_col2, new_date_col1) 
SELECT old_col1, old_col2, getdate() FROM source_table 
+0

这是正确的答案 –

+0

这个工作。谢谢! –

0

假设你已经创建了dest_table具有相同的字段和数据类型为source_table,你只需要一列于表插入之前添加。

create table dest_table 
(column1 <datatype>, 
..., 
..., 
LoadDate datetime); 
GO 

insert into dest_table (column1,...,LoadDate) 
select 
    column1, 
    ..., 
    getdate() 
from source_table 

或者,干脆

select 
    column1, 
    ..., 
    getdate() 
into dest_table 
from source_table 
0

你可以做到这一点如下图所示

INSERT INTO newTable (col1, col2, col3, DATE_Field) 
SELECT column1, column2, column3, GETDATE() 
FROM oldTable 
+0

尽管OP确实表示他们想要它属于哪个月,但我会提醒注意,因为如果数据跨越多年,您将不知道该月份属于哪一年。 – scsimon

+0

我更新了我的答案。你是对的! –

0

如果source_tabledest_table表定义相同,只是额外TimeStamp列均相同,可以这样做:

INSERT INTO dest_table 
SELECT *,MONTH(GETDATE()) 
FROM source_table 

否则,你需要指定的映射关系,例如:

INSERT INTO dest_table (col1,col2...,Date_Column) 
SELECT col3,col4...,MONTH(GETDATE()) 
FROM source_table 
+0

尽管OP确实表示他们想要它属于的月份,但我会提醒你不要这样做,因为如果数据跨越多年,你不会知道该月份属于哪一年。 – scsimon

+0

你是对的,但不知道真正的场景是什么xD – LONG

相关问题