[SQL] 왜 SQL Server는 밀리 초를 잃고있다?
SQL왜 SQL Server는 밀리 초를 잃고있다?
나는이 같은 구조의 테이블을 가지고 :
CREATE TABLE [TESTTABLE]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateField] [datetime] NULL,
[StringField] [varchar](50),
[IntField] [int] NULL,
[BitField] [bit] NULL
)
나는 다음과 같은 코드를 실행 :
BEGIN
INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField)
VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'});
SELECT SCOPE_IDENTITY()
END
그리고
select * from testtable with (NOLOCK)
내 결과 쇼 :
2009-04-03 15:41:27.*377*
DateField 구성 열의.
모든 아이디어는 이유는 밀리 초를 잃는 것 같다 ??
해결법
-
==============================
1.SQL Server는 두 번째의 약 1 / 300 시간을 저장합니다. 이 항상 0, 3, 7 밀리 초에가. 예를 들면 가장 작은 증가에서 0까지 카운트 :
SQL Server는 두 번째의 약 1 / 300 시간을 저장합니다. 이 항상 0, 3, 7 밀리 초에가. 예를 들면 가장 작은 증가에서 0까지 카운트 :
00:00:00.000 00:00:00.003 00:00:00.007 00:00:00.010 00:00:00.013 ...
당신이 밀리 초 정확도를해야하는 경우 주위에 적절한 방법이 없다. 내가 본 가장 좋은 옵션은 사용자 정의 번호 필드의 값을 저장하고 그것을 때마다이 값을 가져, 또는 알려진 형식의 문자열로 저장을 재건한다. 그런 다음 (선택) 속도의 이익을 위해 기본 날짜 형식의 '대략'날짜를 저장할 수 있지만, 그것은 종종 원하지 않는 것을 개념적 복잡성을 소개합니다.
-
==============================
2.SQL 서버 2008는 훨씬 더 정밀 사용할 수 있습니다. 2008-12-19 09 : 31 다음 DATETIME2 형 정확하게 이런 값을 저장할 38.5670514 (정확도 100 나노초).
SQL 서버 2008는 훨씬 더 정밀 사용할 수 있습니다. 2008-12-19 09 : 31 다음 DATETIME2 형 정확하게 이런 값을 저장할 38.5670514 (정확도 100 나노초).
참조 : 시간과 DATETIME2 - 탐색 SQL 서버 2008의 새로운 날짜 / 시간 데이터 형식
-
==============================
3.당신은 아마 반올림 오류가 표시되어 있으므로 SQL Server는 날짜 유형은, 두 번째 (~ 3.33 밀리 초) 해상도의 300 1을 /이있다.
당신은 아마 반올림 오류가 표시되어 있으므로 SQL Server는 날짜 유형은, 두 번째 (~ 3.33 밀리 초) 해상도의 300 1을 /이있다.
은 MSDN 날짜 시간 SQL 서버 참조를 참조하십시오
-
==============================
4.SQL Server는 두 번째의 1 / 300 만 정확합니다. 그것은 가까운 1 / 300에 값을 반올림합니다.
SQL Server는 두 번째의 1 / 300 만 정확합니다. 그것은 가까운 1 / 300에 값을 반올림합니다.
-
==============================
5.DATETIME 무한 정밀도를 가지고 있지 않습니다 - 당신은 아마 정확하게 사용할 수 비트로 표현 될 수있는 값을 사용하고 있습니다.
DATETIME 무한 정밀도를 가지고 있지 않습니다 - 당신은 아마 정확하게 사용할 수 비트로 표현 될 수있는 값을 사용하고 있습니다.
-
==============================
6.SQL Server는 3 밀리 세컨드의 정밀도에 날짜 값을 저장합니다. (나는 이것에 대해 들었지만, 공식 참조를 찾을 수 없습니다.)
SQL Server는 3 밀리 세컨드의 정밀도에 날짜 값을 저장합니다. (나는 이것에 대해 들었지만, 공식 참조를 찾을 수 없습니다.)
from https://stackoverflow.com/questions/715432/why-is-sql-server-losing-a-millisecond by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 특정 필드에 중복을 찾기 위해 문을 선택 (0) | 2020.03.23 |
---|---|
[SQL] 제 3 표에 자신의 FKS 2 개 테이블을 조인하는 데 필요 (0) | 2020.03.23 |
[SQL] dplyr left_join 이하,보다 의해 조건보다 (0) | 2020.03.22 |
[SQL] 오라클 SQL에서 작은 따옴표를 처리하는 방법 (0) | 2020.03.22 |
[SQL] MySQL의 등가 generate_series () (0) | 2020.03.22 |