VBScript의 NOW() 함수를 써서 삽입한 VARCHAR(30)의 테이블을 DATETIME 형식으로 변환하기 위해 다음 방법을 썼다.

1. DateTime 형식의 컬럼을 추가 (RegDate2)
2.
UPDATE tbl_test SET RegDate2 = Substring(RegDate, 1, 10) + Substring(RegDate, 14, 9) + ' ' + CASE Substring(RegDate, 12, 2) WHEN '오전' THEN 'AM' ELSE 'PM' END

변환한 내용을 DB에 삽입한 뒤 바로 컬럼형을 변환해도 인식이 가능하지만 만전을 기하기 위해 새 컬럼을 추가하고 기존 컬럼을 제거하는 방법을 썼다.

그러나 이 경우에도 예외는 존재한다. now() 혹은 date() 함수를 쓸 경우 정각의 경우에는 "2009-05-06 오전 12:00:00"이 다 기록되지 않고 그냥 "2009-05-06"만 표시가 된다. 결국 위의 함수는 실패하게 된다.
방법은 시간에 쓰이는 문자열인 ":"가 없는 경우를 찾아 "오전 00:00:00" 으로 변환하는 것이다.

UPDATE tbl_test
SET RegDate = RegDate + ' 오전 12:00:00'
WHERE RegDate NOT LIKE '%:%'

powered by Moniwiki | themed by clockoon
last modified 2009-08-16 16:16:32
Processing time 0.1269 sec