将日期添加到SQL数据库中的每个日期字段

时间:2014-01-22 21:39:12

标签: sql sql-server date sql-server-2008-r2

我继承了一个用于演示目的的旧SQL Server数据库。它最初是在2006 - 2007年的时间框架内建造的,日期看起来很陈旧。我想在每个表格的每个日期字段中添加大约7年 - 不完全是7年,甚至更像是52周x 7天/周x 7年= 2548天。这样,周一仍然是星期一,星期二仍然是星期二,依此类推。

数据库本身已更新为SQL Server 2008 R2,因此我不再受SQL Server 2000中可能的限制。我是一个新手,所以我不确定从哪里开始,虽然我熟悉基本的更新语句,连接等等 - 我可以阅读你写的内容,并根据我的目的修改它,但是不知道从哪里开始。非常感谢任何指导。

3 个答案:

答案 0 :(得分:0)

这样的事情对你有用。

UPDATE table
SET datefield = DATEADD(DAY, 2548, datefield)

答案 1 :(得分:0)

非常确定这会奏效:

UPDATE DateTable SET DateColumn = DATEADD(day, @numOfDaysToAdd, DateColumn)

答案 2 :(得分:0)

您可以使用sys.columns表查找可能需要更新的列日期的所有列。我使用sys.types表来指定要使用的特定列类型。

SELECT OBJECT_NAME(c.object_id) as TableName, 
       c.name as ColumnName,
       'UPDATE ' + OBJECT_NAME(c.object_id) + ' SET ' + c.name + ' = DATEADD(day, 2548, ' + c.name + ')' as UpdateSQL 
FROM sys.columns c 
WHERE c.system_type_id in (SELECT system_type_id 
                           FROM sys.types
                           WHERE name IN ('datetime','datetime', 'smalldatetime', 'date')
                          )

识别列后,您可以使用DATEADD函数使用以下SQL语句更新每列。在上面的示例中,我包含了第三列,它是每列的update语句。您必须单独复制这些语句并在SSMS中执行它们,因为您可能实际上并不想更新结果中包含的所有日期列。

UPDATE MyTable SET MyDateCol = DATEADD(day, 2548, MyDateCol)