2016-10-24 2 views
-1

날짜를 유지하면서 시간을 변경하여 약속 날짜의 시간을 업데이트하는 쿼리가 필요합니다. 예 :oracle sql에서 시간을 업데이트하려면 어떻게합니까?

10-2 월 09 09:00:00 으로 변경하고 2016 년 2 월 10 일 10:00:00으로 변경하고 싶습니다.

Update Appointment 
set vdate = '10:00:00' 
where vdate= '10-Feb-2016' 

나는 '는 "0 행이 업데이트되었습니다 얻을. 확실하지 내가 뭔가를 누락하는 경우. 사전에 감사.

+0

'vdate'의 유형을 알 수 있습니까? – Bharat

+0

유형은 날짜입니다. – Auxion

+1

만약'Date' 만 거기서 시간을 업데이트 할 수 없으면'datetime'을 사용해야합니다. – Bharat

답변

0

는 다음과 같이하십시오.

UPDATE MyTable 
    SET MyDate = DATEADD(HOUR, 4, CAST(CAST(MyDate AS DATE) AS DATETIME)) 

또는

UPDATE MyTable 
SET MyDate = DATEADD(HOUR, 4, CAST(FLOOR(CAST(MyDate AS FLOAT)) AS DATETIME)) 
+0

오라클에는'datetime' 데이터 유형이 없습니다 . 또는 함수'dateadd' –

3

trunc()은의 시간 부분을 설정할 수 있습니다.(또는 TIMESTAMP) 00:00:00에, 다음에 10 시간 추가 :

Update Appointment 
    set vdate = trunc(vdate) + interval '10' hour 
where trunc(vdate) = DATE '2016-02-10' 

이 날짜 2016-02-10모든 행을 변경합니다. 당신은 09:00입니다 그 사람들을 위해 그렇게하려면 (분, 초를 무시) 그럼 그냥

Update Appointment 
    set vdate = trunc(vdate) + interval '1' hour 
where trunc(vdate, 'hh24') = timestamp '2016-02-10 09:00:00' 

trunc(vdate, 'hh24')00:00date 값의 분, 초를 설정합니다 해당 행에 한 시간 추가 따라서 2016-02-10 09:00:00과의 비교가 제대로 작동합니다.


관련없는,하지만 : 는 암시 적 데이터 형식 변환에 의존하지 않습니다. '10-Feb-2016'은 DATE 리터럴이 아닌 문자열 값입니다. 날짜를 지정하려면 ANSI DATE 리터럴을 사용하거나 to_date() 함수 과 함께 사용하여 문자열 리터럴을 적절한 날짜 값으로 변환합니다.

귀하의 문은 악을 암시 적 데이터 형식 변환 될 수 있으며 문을 실행하는 SQL 클라이언트 설정 다른 NLS를 사용하는 경우 (이 예를 들어 내 컴퓨터에 실패합니다) 실패

0

당신이 원하는 무엇을하면 날짜에 시간을 추가한다, 당신은 할 수 있습니다 :

Update Appointment 
set vdate = vdate + 1/24 
where vdate = to_date('10/02/2016 09:00', 'dd/mm/yyyy hh24:mi'); 

오라클 때문에, 날짜의 차이를 일수로 측정 한 시간은 하루 1/24입니다 있습니다.

당신이 정확한 시간을 지정한다 수행 할 작업 (예 : 10시 25분 48초에), 당신은 다음 대신 할 수있는 경우 이러한 업데이트는 모든 행을 업데이트 할 것을 염두에

Update Appointment 
set vdate = trunc(vdate) + 10/24 + 25/(24*60) + 48/(24*60*60) 
where vdate = to_date('10/02/2016 09:00', 'dd/mm/yyyy hh24:mi'); 

곰 2016 년 2 월 10 일 오전 9 시가됩니다. 보다 구체적인 행 또는 행 집합을 지정하려면 쿼리의 where 절을 변경해야합니다.

관련 문제