SQL Server를 사용하여 타임스탬프를 처리하는 경우 정밀도 제한을 이해하는 것이 중요합니다.
다음 테이블 구조를 고려하세요.
<code class="language-sql">CREATE TABLE [TESTTABLE] ( [ID] [int] IDENTITY(1,1) NOT NULL, [DateField] [datetime] NULL, [StringField] [varchar](50), [IntField] [int] NULL, [BitField] [bit] NULL )</code>
다음 코드를 실행하세요:
<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>
예상되는 동작은 밀리초 단위의 정밀도로 타임스탬프를 저장하는 것입니다. 그러나 다음 문을 사용하여 테이블을 쿼리하는 경우:
<code class="language-sql">select * from testtable with (NOLOCK)</code>
DateField 열에 다음이 표시되는 것을 볼 수 있습니다.
<code>2009-04-03 15:41:27.*377*</code>
SQL Server는 약 1/300초만 저장합니다. 이 시간 값은 항상 0, 3, 7밀리초에 속합니다. 예:
<code>00:00:00.000<br></br> 00:00:00.003<br></br> 00:00:00.007<br></br> 00:00:00.010<br></br> 00:00:00.013<br></br> ...</code>
밀리초 정밀도가 중요한 경우 SQL Server의 기본 데이터 유형에는 직접적인 해결책이 없습니다. 다음 방법을 고려해 볼 수 있습니다.
위 내용은 SQL Server의 `datetime` 데이터 유형에서 밀리초 정밀도는 얼마나 정확합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!