使用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,导致略微偏斜的结果......
答案 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实现它。