2013-08-20 4 views
4
의 날짜 부분은 내가 값이 난 단지 날짜 부분을 업데이트하려면 어떻게

업데이트 날짜 시간

10/4/2012 8:03:00 AM 

인 데이터베이스 에 날짜를 SQL Server 2008의 를 사용하고

?

필드 이름은 dTime입니다.

2012 년 10 월 5 일로 날짜를 업데이트하고 그대로 유지하고 싶습니다.

+0

어떤 유형의 업데이트를 원하십니까? –

답변

3
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 
+0

삽입 및 삭제 된 테이블을 잘 사용합니다. – gicalle

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

날짜를 DD/MM/YYYY 형식으로 게시했다고 가정했습니다. MM/DD/YYYY 인 경우 DATEADD(DAY,1,YourColumn)을 대신 사용해야합니다.

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

이것은 가장 효율적인 솔루션입니다. –

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

그냥 VARCHAR를 사용하여 터치없이 당신이 그것을에 원하는 시간을 수정합니다. 이 예제에서는 CONVERT (varchar (12), columnDatetime)를 사용하여 "20 : 10 : 15.250"과 같은 형식의 시간이 있다고 가정하고 길이가 12 characterseres 인 문자열을 가져옵니다.