【问题标题】:SQL statement to swap timestamps用于交换时间戳的 SQL 语句
【发布时间】:2014-03-02 12:30:53
【问题描述】:

我有几条刚刚复制和编辑的记录。

如下图所示,我有 2 个 FactorType,一个带有“2014....”的时间戳,一个带有“2100...”

我刚刚将它们更新为我想要的值,但我意识到我的时间戳倒退了。带有 2014 日期的记录我想要 2100 和带有 2100 的记录,我想要 2014。

我可以使用任何一系列的 SQL 语句来完成此操作吗?

【问题讨论】:

  • 只需将所有内容放在临时表中,正确设置时间戳即可。然后从临时表重新加载您的原始表。

标签: sql sql-server sql-server-2008 timestamp


【解决方案1】:
update e 
set     ValidTo = case  when e.ValidTo = '20140204' then '21000101' 
                        when e.ValidTo = '21000101' then '20140204' 
                    end
from    [central].dbo.EstimateFactors as e
where   [ComponentPart] = 'Labor Cost' and e.ValidTo in ('20140204','21000101')

编辑:好吧,不要在您的数据库上“测试”代码。备份到另一个物化表(select * into EstimateFactors_backup from [central].dbo.EstimateFactors where [ComponentPart] = 'Labor Cost' and ValidTo in ('20140204','21000101') 可能有效,或者根据适当的情况仅备份数据库)。

【讨论】:

  • 我想先在测试数据上试试这个。它可能有效,也可能无效。
  • 我想过这样的事情,但我担心它最终会一直将列设置为相同的值。
  • 执行上面编辑中的select * into EstimateFactors_backup ...,然后先对该表进行更新,看看它是如何进行的。
猜你喜欢
  • 1970-01-01
  • 2016-02-08
  • 2015-07-25
  • 2015-04-24
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
相关资源
最近更新 更多