none
CAST as DateTime is Rounding - how can I stop the rounding

    질문

  • I don't want my CAST to DATETIME to round. Given a numeric(18,0) date in a file from the IBM i. In SQL we add the '-', ' ', ':', '.' and then cast as a datetime. Well ... it rounds. I need to store it exactly as it exists on the IBM i. 

    -- from IBM i

    20180412152909669

    -- format for SQL and then CAST and it rounds from 669 to 670

    SELECT cast('2018-04-12 15:29:09.669' as datetime)  

    How can i retain '2018-04-12 15:29:09.669' as a datetime?


    • 편집됨 TheBrenda 2018년 6월 13일 수요일 오후 8:20 edit
    2018년 6월 13일 수요일 오후 8:19

답변

  • Use datetime2:

    SELECT cast('2018-04-12 15:29:09.669' as datetime2(3))  

    --2018-04-12 15:29:09.669

    • 답변으로 제안됨 Russ Loski 2018년 6월 13일 수요일 오후 10:31
    • 답변으로 표시됨 TheBrenda 2018년 6월 14일 목요일 오후 4:04
    2018년 6월 13일 수요일 오후 8:21
    중재자

모든 응답

  • Use datetime2:

    SELECT cast('2018-04-12 15:29:09.669' as datetime2(3))  

    --2018-04-12 15:29:09.669

    • 답변으로 제안됨 Russ Loski 2018년 6월 13일 수요일 오후 10:31
    • 답변으로 표시됨 TheBrenda 2018년 6월 14일 목요일 오후 4:04
    2018년 6월 13일 수요일 오후 8:21
    중재자
  • To add to Jingyangs post: datetime has a resolution of 3.33 millisecond, so you cannot represent any millisecond value in datetime. datetime2(3) as a resolution of one millissecond and does not have this problem.

    2018년 6월 13일 수요일 오후 9:45