>데이터 베이스 >MySQL 튜토리얼 >날짜/시간 값을 삽입할 때 SQL Server에서 밀리초가 손실되는 이유는 무엇입니까?

날짜/시간 값을 삽입할 때 SQL Server에서 밀리초가 손실되는 이유는 무엇입니까?

DDD
DDD원래의
2025-01-13 08:32:44573검색

Why Does SQL Server Lose Milliseconds When Inserting Datetime Values?

SQL Server 날짜 및 시간 정밀도 문제

SQL Server에서 날짜/시간 열에 값을 삽입할 때 예상치 못한 밀리초 손실이 발생할 수 있습니다. 예를 들어 다음 쿼리는 다음과 같습니다.

<code class="language-sql">BEGIN
   INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) 
   VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'});

   SELECT SCOPE_IDENTITY()  
END</code>

이후 SELECT * FROM TESTTABLE WITH (NOLOCK) 쿼리를 사용하면 DateField 열의 값이 다음과 같이 나타날 수 있습니다.

<code>2009-04-03 15:41:27.*377*</code>

밀리초 정확도 차이 설명

이러한 밀리초의 손실은 SQL Server의 저장 용량 제한으로 인해 발생합니다. SQL Server의 시간 정밀도는 약 1/300초이며 이러한 간격은 항상 0, 3 및 7밀리초입니다. 따라서 위의 예에서 값은 가장 가까운 3밀리초 간격으로 반내림되어 관찰된 .377 접미사가 됩니다.

밀리초 정밀도 과제 충족

밀리초 정확도가 중요한 경우 쉽게 해결할 수 없습니다. 제안된 솔루션은 다음과 같습니다.

  • 사용자 정의 숫자 필드: 타임스탬프를 사용자 정의 숫자 필드로 저장하고 검색 시 재구성합니다.
  • 문자열 저장: 타임스탬프를 알려진 형식의 문자열로 저장합니다.

이러한 방법은 복잡성을 더하지만 밀리초 정밀도가 절대적으로 필요한 경우 필요한 정밀도를 제공할 수 있습니다.

위 내용은 날짜/시간 값을 삽입할 때 SQL Server에서 밀리초가 손실되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.