2013-03-21 82 views
0

如何在T-SQL中將time(7)類型轉換爲bigint將時間(7)轉換爲bigint T-SQL

我試圖更新並將數據從具有time(7)數據的列轉換爲另一列,即bigint類型。

+0

什麼是關係?你想在'00:00:00.0000000'之後的幾秒鐘內完成任務嗎?分鐘?毫秒? nanaoseconds? bigint值代表什麼? – 2013-03-21 14:28:52

+0

這將代表時間的滴答,但最初我想將數據庫中的所有數據轉換爲'bigint' – 2013-03-21 14:31:28

+0

請嘗試更清楚一點,顯示一些示例數據和預期結果。 – Kaf 2013-03-21 14:36:05

回答

2

假設當你說「打勾」你的意思是秒。如果您的意思是毫秒,則將「ss」更改爲「ms」。

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

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

您可以在'DateDiff'函數中用'0'替換'00:00:00.0000000'。還有一個簡單的提示,就是你錯過了上面Convert函數的右括號。 – Kaf 2013-03-21 14:48:45

+0

@Kaf很好的電話,兩個點。 – 2013-03-21 14:50:57

+0

沒問題!,OP對要求不太清楚。 +1的答案。 – Kaf 2013-03-21 14:53:03

1

datediff返回一個int,所以如果你想要的時間全精度(7)你需要做一些計算。在datediff中使用microsecondnanosecond會導致溢出。

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

結果:

863989999999 

它在datediff要使用00:00而不是0是很重要的。使用0時,您的時間值將隱式轉換爲datetime,並且上面使用的值將轉換爲值23:59:59,因爲datetime已舍入爲.000,.003或.007。

如果datediff supported bigint這一切都會容易得多。