2013-03-21 3 views
0

time(7) 유형을 T-SQL의 bigint으로 변환하려면 어떻게해야합니까?변환 시간 (7) to bigint T-SQL

time(7) 데이터가있는 열의 데이터를 bigint 유형의 다른 열로 업데이트하고 변환하려고합니다.

+0

관계가 무엇입니까? '00 : 00 : 00.0000000 '이후로 초 단위로 시간을 나타내시겠습니까? 의사록? 밀리 세컨드? nanaoseconds? bigint 값은 무엇을 나타내는가? –

+0

그것은 시간의 틱을 나타낼 것이지만, 처음에는 데이터베이스의'time (7)'을'bigint'로 변환하고 싶습니다. –

+0

좀 더 명확히하고 샘플 데이터와 예상 결과를 보여주십시오. . – Kaf

답변

2

"틱"이라고 할 때 초를 의미한다고 가정합니다. 밀리 초를 의미하는 경우 "ss"를 "ms"로 변경하십시오.

Declare @time7 Time(7) 
Set  @time7 = Convert(Time(7),Getdate()) 

Select Convert(Bigint,Datediff(ss,0,@time7)) 
+0

''DateDiff' 함수에서''00 : 00 : 00.0000000''을'0'으로 바꿀 수 있습니다. 또한 위의 Convert 함수의 닫는 대괄호가 누락되었다는 간단한 설명이 있습니다. – Kaf

+0

@Kaf 좋은 콜, 양쪽 포인트. –

+0

문제 없습니다!, OP는 요구 사항에 대해 명확하지 않습니다. 대답에 +1. – Kaf

1

datediff 당신은 시간의 전체 정밀도를 원하는 경우 (7) 당신이 어떤 계산을 할 필요가 있도록 int를 돌려줍니다. microsecond 또는 nanoseconddatediff에 사용하면 오버플로가 발생할 수 있습니다.

declare @T time(7) = '23:59:58.9999999' 
select datediff(second, '00:00', @T) * cast(10000000 as bigint) + right(@T, 7) 

결과 :

863989999999 

datediff00:00 대신 0을 사용하는 것이 중요합니다. 0을 사용하면 시간 값이 datetime으로 암시 적으로 변환되고 datetime이 .000, .003 또는 .007로 반올림되므로 위에 사용 된 값은 23:59:59 값으로 변환됩니다.

datediff supported bigint 인 경우이 모든 것이 훨씬 쉬울 것입니다.