2011-07-20 94 views
0

使用T-SQL,如何找到x個記錄的DateTime值的總和?DateTime列的總和

例子:

id(int) | name(varchar) | TimeInWomb(datetime) 
--------------------------------------- 
id1 |  name1  |  TiW1 
id2 |  name2  |  TiW2 
id3 |  name1  |  TiW3 
id4 |  name1  |  TiW4 
    .  |  .  |  . 
    .  |  .  |  . 
    .  |  .  |  . 

我想找到TimeInWomb的其中name = NAME1的總和。

謝謝。

編輯:

我承認,在事後看來,這是一個非常糟糕的例子,我現在已經改變了。 「總和」是指所有值的名稱= name1的小時/天/星期/月的總和。

答案:

你不能總結日期時間。

+4

當提到日期時,「總和」是沒有意義的。兩個日期的總和應該是多少?你想做什麼? – ean5533

+3

DateTime值的「總和」甚至會是什麼樣的? –

+0

更改示例使其更加清晰。對於那個很抱歉。 – bobble14988

回答

2

我在你的編輯中注意到你把你的「出生日期」欄改爲了「子宮裏的時間」。這是兩個完全不同的概念。 「出生日期」是一個單點時間,其中「子宮內時間」是一段時間。這兩個概念中的哪一個是你想表達的?

  • 如果你想表現一個單一的時間點,那麼做一個「總和」沒有任何意義。你不能有兩個時間點的總和。
  • 如果您試圖表示持續時間,則不應使用DATETIME列。使用DATETIME來表示單個時間點。你應該有兩個DATETIME列(開始和結束),或者你應該有數字列(秒數或類似的東西)。

無論哪種方式,在這裏概念錯誤,我們不能給你一個答案,直到你把事情整理出來。一些預期產出的樣本數據將會有很大幫助。

編輯:

既然你試圖代表時間(在子宮裏的時間)的持續時間,那麼你需要或者有兩個DATETIME列(受孕和出生時的時間,對於例如)或單個數字列(例如子宮中的秒數)。第二個選項更容易處理,但第一個選項爲您提供更大的靈活性。

讓我們假設你有一個SecondsInWomb列是一個數字。你原來的問題的答案將是:

SELECT SUM(SecondsInWomb) FROM table WHERE name = 'name1' 

這將告訴你在這個名字在子宮花了幾秒鐘的總量。

+0

我想表現一個持續時間(因此它的變化和懺悔是一個不好的例子)。但是,感謝您的回覆,我已經按照您的建議修改了我正在做的兩個時間點。 – bobble14988

1

如果你只設定的時間,例如,你可以使用SQL的默認值通過執行以下操作來實現自己的目標,相當於:

總和(DATEDIFF(分鐘,'1900-01-01 00:00: 00',TimeInWomb)

如果你沒有設置日期時間函數的一部分,你會得到另一部分的MS SQL默認值,MS SQL的默認值是1900-01-01 00:00:00。您只設置日期,時間設置爲00:00,如果您設置時間,則日期將變爲1900-01-01。

我希望這會有所幫助。

+0

[最新評論提醒]它應該是「分鐘」而不是「分鐘」 – lastr2d2