ASP에서 현재 날짜를 DB의 datetime 타입 컬럼에 넣으려다보니 에러가 발생한다. 웹에서는 원인을 알 수 없으니 서버에 들어가서 쿼리분석기를 돌려보았다. " 문자열을 datetime으로 변환하는 중 구문 오류가 발생했습니다." 란다. 아무래도 내가 집어넣으려는 값과 값을 담을 그릇이 서로 다른 데이터 형태를 가지고 있는가보다. 그래서 꾸물꾸물 값을 찍어보니...
ASP에서 now()를 사용하면 나오는 값은 이거 --> 2009-07-31 오후 1:26:25
DB에서 datetime 타입안에 들어가는 값은 이거 --> 2009-07-31 13:26:25.270
now()에서는 오전/오후라는 한글이 들어가는 점이 다른 것 같다. 그래서 이걸 string으로 만들어야 하나 고민을 하던 차에 인터넷에서 좋은 게 있어서 써봤다.
CREATE FUNCTION dbo.fn_Changedatetime ( @sdate varchar(30) )RETURNS DATETIME AS BEGIN DECLARE @RETURNVALUE DATETIME BEGIN SELECT @RETURNVALUE=CASE WHEN CHARINDEX('오후',@sdate)>0 THEN DATEADD(HH,12,CONVERT (DATETIME, REPLACE(@sdate,'오후',''))) ELSE CONVERT (DATETIME,REPLACE(@sdate,'오전','') ) END END RETURN(@RETURNVALUE) END
Function. 즉 함수다. 학교를 다닐 때 분명 DB 수업을 들었는데(심지어 학점도 잘 나왔어!) 그런데 이렇게 함수 기능이 있는지도 몰랐다.
내부적으로는 오후일 경우 시간에 12를 플러스 시켜주어 24시간 타입으로 바꾸고, 또 오전과 오후라는 문자열을 공백으로 치환시키는 것 같다. 하지만 사실 그런거 몰라도 주욱 드래그해서 긁어다가 쓰고 쿼리문 내에서 dbo.fn_Changedatetime를 호출만 하면 된다. 이렇게.
SQL = "INSERT TABLE_NAME VALUES (dbo.fn_Changedatetime('"&now()&"'))"
아- 편하네.
'브랜드메이킹 > 2009 신입 개발자 일기' 카테고리의 다른 글
| 코딩용 글꼴은 고정너비를 이용하자 (0) | 2009/08/13 |
|---|---|
| ASP에서 now() 값을 DB의 datetime에 저장하자 (0) | 2009/07/31 |
| SQL (0) | 2009/07/17 |
| 모바일 디바이스로의 디버그 속도가 느리다면? (0) | 2009/06/03 |