SQL Server 仅更新DateTime的Date部分

tsm1rwdh  于 2022-11-21  发布在  其他
关注(0)|答案(6)|浏览(171)

我使用的是SQL Server 2008。我在数据库中有一个日期时间,其值为

10/4/2012 8:03:00 AM

如何仅更新日期部分?
字段名称为dTime。
我喜欢将日期更新为10/5/2012,并保持时间不变。

j1dl9f46

j1dl9f461#

UPDATE
    tableX
SET
    columnX = DATEADD( day, DATEDIFF( day, columnX, '20120510' ), columnX ) 
WHERE
    (conditionX) ;
mbyulnm0

mbyulnm02#

CREATE TABLE dbo.MyTable(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    DTColumn DATETIME NOT NULL
);
GO
INSERT dbo.MyTable(DTColumn) VALUES 
('20120410 08:03:00.000'),
('20010101 01:01:01.000');

BEGIN TRANSACTION;
    UPDATE  dbo.MyTable
    -- Style 126 / ISO8601 = yyyy-mm-ddThh:mi:ss.mmm        
    SET     DTColumn = STUFF(CONVERT(VARCHAR(50),DTColumn,126) ,1, 10, '2012-05-10') 
    -- Uncomment this line to see the old and new values
    -- OUTPUT   deleted.DTColumn AS OldValue, inserted.DTColumn AS NewValue
    WHERE   CONVERT(DATE,DTColumn)='2012-04-10' 

    SELECT * FROM dbo.MyTable;
ROLLBACK;
-- COMMIT

结果:

OldValue                NewValue
----------------------- -----------------------
2012-04-10 08:03:00.000 2012-05-10 08:03:00.000

ID          DTColumn
----------- -----------------------
1           2012-05-10 08:03:00.000
2           2001-01-01 01:01:01.000
uurv41yg

uurv41yg3#

UPDATE YourTable
SET YourColumn = DATEADD(MONTH,1,YourColumn) 
WHERE YourColumn = '20120410 08:03:00'

我假设你用DD/MM/YYYY发布你的日期。如果是MM/DD/YYYY,你应该用DATEADD(DAY,1,YourColumn)代替。

nsc4cvqm

nsc4cvqm4#

UPDATE table1 
 SET columnDatetime = '10/5/2012' + ' ' + CONVERT(varchar(12), CONVERT(time, columnDatetime))
 WHERE CONVERT(date, columnDatetime) = '10/4/2012'

在这个例子中,我使用CONVERT(varchar(12),columnDatetime)来得到一个长度为12个字符的字符串,假设一个时间的例子,格式为“20:10:15.250”。

8fq7wneg

8fq7wneg5#

更新表格X设置dttime = CONCAT(“2012-10-24“,时间(dttime))WHERE日期(dt 1)=”2012 -05-10“

fnx2tebb

fnx2tebb6#

这是我的查询。它将更新 checkout 日期与签署日期没有改变时间。
UPDATE数据表名称SET登入时间=STUFF(CONVERT(VARCHAR(50),登入时间,126),1,10,CONVERT(日期,登出时间))其中识别码= 100

相关问题