The sum of a DateTime column



使用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。

相关内容

  • 没有找到相关文章

最新更新