안녕하세요, sql server를 사용하고 있는 개발자 입니다.

sql server에서 이상한 증상이 발견되어, 혹시 버그는 아닌가 해서 문의 드립니다.

여러 단계의 프로세스 중, 먼저 select한 getdate()보다 나중에 select한 getdate()가 더 과거의 값이 select되는 증상을 발견하였습니다.

이를 테스트 하기 위해 별도의 쿼리를 작성하여 테스트를 해보니, 동일한 증상이 많이 나타납니다.

혹시, 연속으로 getdate()를 여러번 진행할 경우에 그런 증상이 나타날 수 있는 것인지요?

datetime형식의 경우 .000, .003 또는 .007초 단위로 반올림 되는 사항과 연관이 있나 싶었지만,

그 문제는 아닌것 같고, 반올림 여부와 상관없이 오류가 있는 듯 합니다.

실제 소스는 아래와 같은 패턴이며 테스트 쿼리는 따로 작성했습니다.

실제 소스 패턴

1. set @변수1 = getdate()

2. 필요한 프로세스 처리

3. set @변수2 = getdate()

4. 필요한 프로세스 처리

5. @변수1과 @변수2와 관련한 처리 시 오동작(if문이나 where문에서 사용)

GETDATE()의 오동작 테스트 쿼리

SET NOCOUNT ON;

DECLARE @loopCount INT
, @loopMaxCount INT
, @beforeDatetime DATETIME
, @currentDatetime DATETIME

SET @loopCount = 1
SET @loopMaxCount = 100000000
SET @beforeDatetime = GETDATE()


WHILE @loopCount <= @loopMaxCount
BEGIN
SET @currentDatetime = GETDATE()

IF @beforeDatetime>@currentDatetime
BEGIN
SELECT @loopCount AS 'No', @beforeDatetime AS 'beforeDatetime', @currentDatetime AS 'currentDatetime'
END

SET @beforeDatetime = @currentDatetime

SET @loopCount  = @loopCount + 1
END

증상은 2005, 2014에서 나타나는것을 확인했지만, 모든 버전에서 확인하기가 힘들기 때문에 문의 드립니다.

또한, 위 쿼리로 테스트 시 증상이 무조건 나오는 것도 아니고 나왔다 안나왔다 혹은 조금 나왔다 많이 나왔다 합니다.

위 증상에 대해서 확인이 가능했으면 좋겠습니다.


No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36265
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18862
9043 프로시저에 관한 완전 기초적 질문입니다 . ㅠ [4] sincie 2015.12.08 2124
9042 프로시저 수행 시 오류. [4] 순작 2015.12.08 2307
9041 쿼리문의드립니다.. 행/열 전환 [3] 스타카토 2015.12.08 2208
9040 delete 작업 프로시저에서 유효성 검사 질문입니다. [3] sincie 2015.12.08 2020
9039 일정 시간 후 연결이 끊겨버립니다. [5] 쏘영Love 2015.12.08 2870
9038 날짜변환 쿼리 도움요청좀ㅠ [5] khaluamilk 2015.12.08 2463
9037 AlwaysOn 구성한 후 Failover 시에 Secondary Server의 Agent Job 활성화 처리 [4] 어름알음얼음 2015.12.07 2612
9036 크리스탈리포트 출력물 sql [1] 마힐링 2015.12.07 5554
9035 SQL 서버의 보안과 Bit Locker [5] 조형근 2015.12.04 2764
9034 데이터 중복값중 1개만 남기고 삭제할수 있는 방법이~? [2] 동동동 2015.12.03 2638
9033 SELECT 문 질문 하겠습니다.(수정분) [6] 백마탄나 2015.12.03 2429
9032 SELECT 문 질문 하겠습니다. [3] 백마탄나 2015.12.03 2838
» SQL Server GETDATE() 버그인것인지 문의 [4] Jaden 2015.12.01 2634
9030 트랜잭션 교착상태 [2] leesoek 2015.11.30 2777
9029 두 테이블 조인 시 B 테이블의 여러 레코드 중 1개만 조인 시킬 때 [2] Larry 2015.11.30 4485
9028 중국어(한자) ? 로 업데이트 되는 문제 ㅠ [6] 더따뜻한 2015.11.27 3149
9027 한글 포함 컬럼인지의 여부 체크 [2] 더따뜻한 2015.11.26 4843
9026 SQL 쿼리문 질문 하나 하겠습니다. [9] 백마탄나 2015.11.26 3241
9025 sys 시스템 테이블 조회 안되게 하는 방법 [1] 한인 2015.11.25 2165
9024 한컬럼에 다른테이블 연관 레코드에 표시하기 [4] 김민식_279245 2015.11.25 2291





XE Login