更新SQL某个表中的时间字段中的一部分数据整体增加小时数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新SQL某个表中的时间字段中的一部分数据整体增加小时数相关的知识,希望对你有一定的参考价值。

更新这部分数据select * from dbo.lssjtemp where xfsj between '2015-03-31 19:00:00' and '2015-03-31 23:59:59'整体增加3个小时 其他在这个范围之外的数据不动

update lssjtemp set xfsj = dateadd(day,3,xfsj) where xfsj between \'2015-03-31 19:00:00\' and \'2015-03-31 23:59:59\' 参考技术A update dbo.lssjtemp set xfsj = dateadd(hh,3,xfsj) where xfsj between '2015-03-31 19:00:00' and '2015-03-31 23:59:59' 参考技术B update dbo.lssjtemp set xfsj=dateadd(hour,3,xfsj) where xfsj between '2015-03-31 19:00:00' and '2015-03-31 23:59:59'追问

消息 2601,级别 14,状态 1,第 1 行
不能在具有唯一索引 'only' 的对象 'dbo.lssjtemp' 中插入重复键的行。
语句已终止。

追答

更新引发了重复数据,比如你的数据库中存在数据2015-03-31 23:00:00和2015-04-01 02:00:00,因为你只给2015-03-31这天的数据加了3个小时,2015-03-31 23:00:00就变成了2015-04-01 02:00:00,这样就会和现有的数据冲突

参考技术C 找网管~~~

SQLSERVER如何在数据库里根据某个字段,查出该表名字

SQLSERVER如何在数据库里根据某个字段,查出该表名字

SQLSERVER中 根据字段名称查找所在表格名称的方法:

一、语句的思路:

SQLSERVER的两个系统表:1、保存表格字段属性的:syscolumns 2、保存数据库对象属性的:sysobjects ,它们都包含对象ID字段,所以可以使用两个表格的ID字段,作为表格联合检索依据来进行检索。

二、相关系统表格简介:

1、syscolumns :每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。

2、sysobjects :在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。

三、根据字段名称检索所在表格名称

select syscolumns.name,sysobjects.name --syscolumns.name:字段名、sysobjects.name:表格名称
from syscolumns,sysobjects 
where syscolumns.name = \'gc_lczt\' and syscolumns.id = sysobjects.id;--以字段名称\'gc_lczt\'为例,使用字段ID关联两个表格

四、检索结果如图:

五、注意:因为不同表格可能有相同的字段名称,所以结果有可能不只一条。

参考技术A 你可以用工具把数据库表定义导出来,导出的是excel文件,再在这个excel文件里检索这个字段名称 参考技术B SELECT t2.name 
FROM syscolumns t1,sysobjects t2
WHERE t1.id=t2.id
and t1.NAME='字段名'

以上是关于更新SQL某个表中的时间字段中的一部分数据整体增加小时数的主要内容,如果未能解决你的问题,请参考以下文章

mysql如何更新一个表中的某个字段值等于另一个表的某个字段值

SQL server中某个表的字段值为啥不能修改?

如何获取sqlserver某个表中的字段数目

EF怎样只更新表的部分字段

SQL中插入数据并更新数据的某个字段

如何更新oracle表中的分区字段