如何组合来自两个DateTime列(SQL Server)的数据?

时间:2009-12-11 20:20:38

标签: sql-server datetime concatenation

使用SQL Server 2005,我正在使用一个包含两列的数据库来跟踪基本上是单个DateTime的内容(我不知道为什么有人会认为这是一个好的生活理念)。

基本上,一列,我们称之为OrderDate,包含这样的DateTime:2008-02-29 00:00:00.000,另一列OrderTime有这样一个:1900-01-01 11:15 :00.000

所以,现在每当我想在一个地方显示整个日期和时间时,我就被迫将这两者结合起来。从UI的角度来看这很容易,但我如何在数据库级别执行此操作?我希望能够编写一个查询,从这两列中找到组合日期和时间之间的DATEDIFF,并将其与另一个DateTime值进行比较。

例如:

SELECT DATEDIFF(mi, CompletionTime, OrderTime) AS TurnAroundTime FROM SomeRecord

以上问题当然是OrderTime的日期组件是1900-01-01,导致略微偏斜的结果......

2 个答案:

答案 0 :(得分:2)

创建一个将它们添加到一起的计算列

  Alter Table TableName Add CompleteDate as DateOnlyColName + TimeOnlyColName

要确保不会无意中添加DateOnlyColName中的错误时间数据,请改用它...

  Alter Table TableName Add CompleteDate as 
         DateAdd(day, DateDiff(day, 0, DateOnlyColName), 0) + 
                      TimeOnlyColName

答案 1 :(得分:1)

在SQL中使用“OrderDate + OrderTime”创建“OrderDateTime”。或者定义一个计算列。

SQL标准支持日期时间的标准添加,我敢肯定,SQL Server实现它。

There is an example in BOL