将数据插入SQL Server表,同时将30天添加到日期字段

时间:2017-04-17 16:04:38

标签: sql sql-server

我正在尝试做什么:

我正在为类项目的可用性构建库存系统。我正在尝试加载所有一组默认数据(包括设备ID以及在没有设备时可用的数量)并更改日期以保持正在进行的数据库,以便在接下来的30天内随时跟踪可用性。

我是怎么做的:

我的教授(非常不干涉)在SQL Management Studio中启用了对SQL作业代理的访问,我目前正在构建一个语句,允许我复制所有提到的默认数据并将其重新添加到数据库中但是将30天添加到日期列。我希望在将其作为程序

之前先使用此语句

我有什么:

insert into EquipmentAvailabilities(Date, NumberAvailable, EquipmentId)
values((GETDATE()+30), 
(select NumberAvailable, EquipmentId from EquipmentAvailabilities));

短信给了我什么:

Msg 116, Level 16, State 1, Line 15
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Msg 109, Level 15, State 1, Line 13
There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.

我尝试了什么:在弄清楚如何获得GETDATE后,我只尝试了以下内容。

insert into EquipmentAvailabilities(Date, NumberAvailable, EquipmentId)
values((GETDATE()+30), 
(select NumberAvailable from EquipmentAvailabilities), 
(select  EquipmentId from EquipmentAvailabilities));

2 个答案:

答案 0 :(得分:0)

你在这里混淆查询。并且不要使用快捷方式进行日期数学运算。

insert into EquipmentAvailabilities
(
    Date
    , NumberAvailable
    , EquipmentId
)
select dateadd(day, 30, getdate())
    , NumberAvailable
    , EquipmentId 
from EquipmentAvailabilities

答案 1 :(得分:0)

如果您想在日期列中添加30天,请不要使用getdate()

insert into EquipmentAvailabilities (Date, NumberAvailable, EquipmentId)
    select dateadd(day, 30, date),
           NumberAvailable, EquipmentId
    from EquipmentAvailabilities;