2013-03-01 3 views
0

저는 SQL에 익숙하지 않지만 최근에는 TIME으로 정의 된 열을 보유한 테이블을 만들었습니다. 웬일인지 나는이 분야가 12 AM (23:59:99.999) 바로 아래의 값을 잡을 수 없다. 내 단순화 된 TSQL은 아래와 같습니다.TIME 값 생성, 저장 및 사용

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

것은 내가 가장 낮은 시간 '해상도'에 시간 값 수 설정 및 성공적 필드 업데이트 :

DECLARE @Time TIME = '23:59:99.99999' 
UPDATE tblProjectSLA 
SET colSLATime = @Time 
WHERE SLAID IN (22, 24) 

나는 다음과 같은 오류가 발생합니다. 이 SQL 관리인에 나타나는 여기

DECLARE @Time DATETIME = '23:59' 

내가 그것을 쿼리 할 때 결과입니다

DECLARE @Time TIME = CAST('23:59:99.99999' AS TIME) 
: 나는 또한 시간에 문자열 값을 캐스팅 ... 같은 오류를 시도

colSLATime 
23:59:00.0000000 

내가 이상한 점은 테이블의 정밀도가 16이고 스케일이 7로 정의되었으므로 테이블에 저장된 값에 가까운 값을 사용할 수 없어야한다는 것입니다. 여기

는 열 colSLATime가합니다 (sp_help는 명령을 사용하여 쉽게 읽을 전치) ... 정의 누군가가 기능에 간단한 토론에를 사용 & 아웃을 날 지점 수 있다면

Column_name   colSLATime 
Type     time 
Computed    no 
Length    5 
Prec     16 
Scale     7 
Nullable    yes 
TrimTrailingBlanks (n/a) 
FixedLenNullInSource (n/a) 
Collation    NULL 

방법입니다 TIME 데이터 유형. 아니면 스크랩하고 VARCHAR 필드와 CAST를 런타임에 사용해야합니다 (추측하지 마라).

REFERENCE

time (Transact-SQL) 
SQL Server 2008 R2 
Range  00:00:00.0000000 through 23:59:59.9999999 

답변

1

음, 사용해보십시오 :

23:59:59.99999 
------^ this digit is pretty important! 

대신

23:59:99.99999 
------^ 

의 분 99 초로 같은 것은이 없습니다!

+0

긴 단어가 있습니다 – Lamak

+0

지즈! ... 나무를 통해 숲을 볼 수 없습니다! DECLARE @ 시간 = '23 : 59 : 59.9999999 '일했습니다! 나를 똑바로 설정해 주셔서 감사합니다! – TonyBromo