생활
델파이에서 쿼리로 MSSQL 날짜시간 보내면 달라요 어떻게하죠??
위 질문 그대로
델파이에서 now로 mssql insert하거나 update하면
현재 날짜시간이 아닌 다르게 나오는데
어떻게 하면될까요?
55글자 더 채워주세요.
1개의 답변이 있어요!
storedProcedure사용시 2008 SQL서버에서 새로 생긴 Date는 델파이2007에서는 ftWideString으로 할당됩니다
아마 2008SQL서버가 최근발표된것이라
델파이2007이 스트링으로 표현되는듯 하고 어쨋든 사용하는데는 지장이 없어요
SQL서버의 datetiem형식은 파라메터로 ftDatetime으로 할당되고 초단위까지만 사용한다면 문제되지 않습니다.
문제는 밀리세컨드까지 사용하고 싶을때 델파이의 Now등은 TDatetime으로 밀리세컨드를 포함하는데도
서버로 ftDatetime형식의 파라메터로 전달시 밀리세컨드단위는 잘린다는 것입니다
TDatetime이 내부적으로 Double의 플로트타입이므로 호환되는 것 같습니다.
즉, 플로트타입으로 전달시 주의사항은 기준일자(숫자 0)가 델파이(1899-12-30), MS-SQL(1900-01-01) 2일차이남으로
델파이에서 서버로 전달시 변수t_float := NOW - 2; 이런 식으로 2일을 빼주어 전달해야 날짜차이가 발생하지 않습니다
어쨋든 SQL서버의 datetime의 밀리세컨드단위를 사용하고 싶으면 TADOStoredProc의 해당컬럼 파라메터의 데이타타입을
ftDatetime을 ftFloat로 변경하면 됩니다
답변이 되었으면 좋겠네요
좋은공부되세요^^