2014-09-10 2 views
2

EntityFrameworkByte[] 배열로 SQL Server timestamp 열을 매핑합니다. 따라서 LastUpdate timestamp과 같은 열이있는 테이블의 경우 생성 된 모델 속성은 public byte[] LastUpdate입니다.은 SQL 'timestamp'열이며 실제로 'byte []'입니까?

제 질문은이 속성을 DateTime으로 변환하는 방법입니까? 해결 방법이 타임 스탬프를 datetime으로 변경하는 경우에는 도움이되지 않습니다.

+1

타임 스탬프라고 할 때 SQL Server 타임 스탬프 데이터 형식을 의미합니까? – DavidG

+0

물론 감사합니다. 질문을 편집했습니다. – Bellash

+0

관련이 없으므로 timestamp 태그를 제거했습니다 (SQL Server가 추가되었습니다.) – DavidG

답변

8

SQL Server TIMESTAMP 데이터 형식은 날짜 시간 값이 아니므로 혼동해서는 안됩니다. TIMESTAMPROWVERSION의 동의어이며 이와 같이 처리되어야 함을 기억하십시오. 바이트 배열로 저장하는 것이 가장 좋은 방법입니다. MSDN Documentation에서

:

rowversion 데이터 형식은 단지 증가 숫자와 이 날짜 또는 시간을 보존하지 않습니다. 날짜 또는 시간을 기록하려면 datetime2 데이터 형식을 사용하십시오.

+0

DavidG 고맙습니다.하지만 타임 스탬프는 유닉스 시대부터 지금까지 수 밀리 초입니다. 만약 이것이 사실이라면,'byte []'->로 저장된'timestamp' ->를 DateTime 객체? – Bellash

+1

@Bellash 당신은 어떻게 생각하니? 제가 링크 된 문서를 읽으십시오, 그곳에 모두 설명되어 있습니다. – DavidG

+0

@ScottChamberlain SQL 표준은 date + time으로 'TIMESTAMP'를 정의합니다 (SQL Server에서 datetime 또는 datetime2를 호출하는 대상). 이 경우에는 이상하고 혼란스러운 이름을 사용하는 SQL Server입니다. –

2

네 그것은 바이트의 배열없이 당신이 배열로와 "Play"를 좋아하지 않는 경우에, 당신은 ulong

var timestamp = BitConverter.ToUInt64(array, 0); 
로 변환 할 수 있습니다, 날짜 시간이 아니다
+0

정답입니다. 위의 답변도 정확하지만 OP는 솔루션에 대한 질문을하고 내 의견으로는 이것이 OP 질문에 대한 대답입니다. –

관련 문제