实际的情况是 ,正确的时间应该是2013-09-15 ,但是输入2条记录后 发现
电脑时间错了 变成了2013-09-19 了,然后就把电脑时间调整为正确的 2013-09-15号
输入了第3条记录,导致了如下结果:
表 table 2列 id(数字型),indate(日期型)
数据如下
1 2013-09-19 11:02:00
2 2013-09-19 11:03:00
3 2013-09-15 11:07:00
现想把第一第二条日期错误的记录 2013-09-19 改成正确的日期 2013-09-15
也就是要改变日期 但是不改变时间 得到如下结果
1 2013-09-15 11:02:00
2 2013-09-15 11:03:00
3 2013-09-15 11:07:00
请教这个sql语法怎么写?谢谢
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_HuangZJ(发粪涂墙)
-- Date :2014-03-20 07:52:53
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
-- Apr 2 2010 15:48:46
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[table2]
if object_id('[table2]') is not null drop table [table2]
go
create table [table2]([id] int,[indate] datetime)
insert [table2]
select 1,'2013-09-19 11:02:00' union all
select 2,'2013-09-19 11:03:00' union all
select 3,'2013-09-15 11:07:00'
--------------生成数据--------------------------
SELECT * FROM [table2]
go
UPDATE [table2]
SET [indate]=DATEADD(dd,-4,[indate])
WHERE [indate] BETWEEN '2013-09-19 00:00:00.000' AND '2013-09-19 23:59:59.997'
go
SELECT * FROM [table2]
----------------结果----------------------------
/*
id indate
----------- -----------------------
1 2013-09-19 11:02:00.000
2 2013-09-19 11:03:00.000
3 2013-09-15 11:07:00.000
(3 row(s) affected)
(2 row(s) affected)
id indate
----------- -----------------------
1 2013-09-15 11:02:00.000
2 2013-09-15 11:03:00.000
3 2013-09-15 11:07:00.000
*/
------解决方案--------------------
UPDATE [table2] SET [indate]=DATEADD(dd,-4,[indate]) WHERE [id] BETWEEN 1 AND 2
------解决方案--------------------
update table2 set indate=dateadd(dd,-4,indate) where id<3