使用T-SQL,如何找到x个记录数量的DateTime值之和?
示例:
id(int) | name(varchar) | TimeInWomb(datetime)
---------------------------------------
id1 | name1 | TiW1
id2 | name2 | TiW2
id3 | name1 | TiW3
id4 | name1 | TiW4
. | . | .
. | . | .
. | . | .
我想找到TimeInWomb的总和,其中name = name1。
感谢。
编辑:
我承认,事后来看,这是一个非常糟糕的例子,我现在已经改变了。 “sum”是指name = name1的所有值的小时/天/周/月的总和。
解答:
你无法总结日期时间。
答案 0 :(得分:2)
我在您的编辑中注意到您将“出生日期”列更改为“子宫中的时间”。这是两个非常不同的概念。 “出生日期”是一个单一的时间点,“子宫内的时间”是一个时间的延迟。您试图表达这两个概念中的哪一个?
DATETIME
列。 DATETIME
用于指代单个时间点。您应该有两个DATETIME
列(开头和结尾),或者您应该有数字列(秒数或类似的东西)。无论哪种方式在概念上都是错误的,我们无法给你答案,直到你把事情整理好。一些具有预期输出的样本数据将有很大帮助。
修改强>
由于您试图表示持续时间(子宫中的时间),因此您需要有两个DATETIME
列(例如受孕时间和出生时间)或单个数字列(例如,子宫中的秒数)。第二个选项更容易使用,但第一个选项为您提供了更大的灵活性。
我们假设你有一个SecondsInWomb
列是一个数字。你原来问题的答案是:
SELECT SUM(SecondsInWomb) FROM table WHERE name = 'name1'
这将告诉你在子宫中为该名称花费的总秒数。
答案 1 :(得分: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。
我希望这会有所帮助。