아하
생활

생활꿀팁

탈퇴한 사용자
탈퇴한 사용자

델파이에서 쿼리로 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로 변경하면 됩니다

    답변이 되었으면 좋겠네요

    좋은공부되세요^^