日期和;单独列中的时间,第二种格式的时间,如何获得“最大日期时间”?

时间:2010-12-01 18:24:03

标签: sql sql-server datetime datetime-format

我面临获得部分最新(最新)的记录,我唯一的方法是使用“最大日期”方法。

这是一个基本架构(和示例数据):

ldDate                  ldTime  ldPart          id
2010-10-26 00:00:00.000 52867   90-R6600-4100   186
2010-11-01 00:00:00.000 24634   90-R6600-4100   187
2010-11-24 00:00:00.000 58785   90-R6600-4100   194
2010-11-24 00:00:00.000 58771   90-R6600-4100   195
2010-11-17 00:00:00.000 29588   90-R6600-4100   201
2010-11-08 00:00:00.000 29196   90-R6600-4100   282
2010-11-08 00:00:00.000 29640   90-R6600-4100   290
2010-10-19 00:00:00.000 58695   90-R6600-4100   350
2010-09-22 00:00:00.000 32742   BH4354-F0       338
2010-09-22 00:00:00.000 32504   BH4354-F0       340
2010-11-17 00:00:00.000 31157   BH4354-F0       206
2010-11-08 00:00:00.000 27601   BH4354-F0       218
2010-11-08 00:00:00.000 27865   BH4354-F0       21
2010-09-22 00:00:00.000 23264   BR6950-F0       70
2010-09-22 00:00:00.000 23270   BR6950-F0       77
2010-09-24 00:00:00.000 27781   BR6950-F0       97
2010-11-24 00:00:00.000 57735   BR6950-F0       196

我上面的内容是 ldDate 没有时间,而且 ldTime 但不是正确的HH:MM:SS表示,它是午夜以来的秒数,所以第一行是:

2010-10-26 00:00:00.000 52867 或者如果我转换时间:

52 867秒= 14.6852778小时 〜2010-10-26 14:68:52

有没有一种干净的方法可以在我的SQL查询中组合两列?我想做一个简单的max(ldCombinedDate)和ldPart(部件号)分组。

id,几乎是无用的,所以忽略它,它现在是否有插入记录的顺序,没有别的,可以用于嵌套查询呢?注意:输入顺序并不意味着最新日期......

...谢谢

1 个答案:

答案 0 :(得分:4)

表达式

DATEADD(second, ldTime, ldDate)

将返回合并日期。所以,我想你想要这样的东西:

SELECT ldPart, MAX(DATEADD(second, ldTime, ldDate)) AS MaxCombinedDate
  FROM yourtable
 GROUP BY ldPart