2012-11-06 4 views
1
MyTable: 
id  int 
Date1 DateTime 
Date2 DateTime 

Date2의 날짜에 영향을주지 않고 Date2의 시간을 Date1과 동일하게 설정하려면 어떻게해야합니까?날짜가 아닌 DateTime 시간 업데이트

+1

어떤 SQL Server 버전을 사용하고 있습니까? – Lamak

+0

sql 2008 r2. 다른 버전에서는 작동하지 않는 것이 무엇인지 알고 싶습니다. – simon831

답변

3

SQL 서버에서 작동합니다.

UPDATE MyTable 
SET Date2 = DATEADD(DAY, DATEDIFF(DAY, Date1, Date2), Date1); 

이렇게하면 날짜 부분은 Date2으로 유지됩니다.

UPDATE :이 방법은 기본적으로 참조로서 Date1를 사용하고 단지 Date1Date2 일 사이의 차이를 가산함으로써 재구성 Date2-Date1에서 타임 스탬프를 유지한다.

+0

나는 질문을 오해 할까 두려워, date2의 날짜는 동일하게 유지되어야한다 –

+0

롤, 나는 그 질문을 이해했다. 나는 대답을 바꾸었다. – tobias86

+0

좋은 해결책, +1 –

0
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date2)) + DATEADD(day, -datediff(day, 0, @Date1), @Date1) 
1

이 두 날짜 사이의 일에만 차이로 업데이트 Date2 2008+

select cast(cast(date2 as date) as datetime) + cast(date1 as time) newdate2 
from (select getdate() date2, cast('2012-01-01 20:00' as datetime) date1) a 
관련 문제