使用T-SQL,如何找到x条记录的DateTime值的总和?
的例子:
id(int) | name(varchar) | TimeInWomb(datetime)
---------------------------------------
id1 | name1 | TiW1
id2 | name2 | TiW2
id3 | name1 | TiW3
id4 | name1 | TiW4
. | . | .
. | . | .
. | . | .
我想找到timein子宫的总和,其中name = name1。
谢谢。编辑:
我承认,事后看来,这是一个非常糟糕的例子,我现在已经改变了。我所说的"sum"是指name = name1中所有值的小时/天/周/月之和。答:
日期时间不能加和
我注意到你在编辑中将"出生日期"一栏改成了"在子宫里的时间"。这是两个非常不同的概念。"出生日期"是一个时间点,"在子宫里的时间"是一段时间。你想表达的是这两个概念中的哪一个?
- 如果你试图表示一个时间点,那么做一个"one_answers"是没有任何意义的。你不能有两个时间点的和。
- 如果您试图表示一段时间,那么您不应该使用
DATETIME
列。DATETIME
表示一个时间点。你应该有两个DATETIME
列(开始和结束),或者你应该有数字列(秒数,或类似的东西)。
不管怎样,这里有概念上的错误,我们不能给你答案,直到你把事情整理好。一些具有预期输出的样例数据将大有帮助。
编辑:由于您试图表示一段时间(在子宫内的时间),因此您需要两个DATETIME
列(例如,受孕时间和出生时间)或单个数字列(例如,在子宫内的秒数)。第二个选项更容易使用,但第一个选项更灵活。
让我们假设您有一个SecondsInWomb
列,它是一个数字。你原来问题的答案是:
SELECT SUM(SecondsInWomb) FROM table WHERE name = 'name1'
将告诉您该名称在子宫内花费的总秒数。
如果您只设置相当于时间的值,例如,您可以使用SQL的默认值来完成以下操作:
sum(datediff(minutes,'1900-01-01 00:00:00', timein子宫)
如果您不设置日期时间函数的一部分,您将获得MS SQL默认的其他部分。MS SQL默认为1900-01-01 00:00:00。如果只设置日期,则时间为00:00,如果设置时间,则日期为1900-01-01。