说,我有两个 DATETIME2 列,我需要在两者之间选择日期。示例:1/1/2012 08:00 和 1/1/2012 09:00 应生成 1/1/2012 08:30。
我正在尝试这个:
SELECT CAST((CAST(dtOut AS float(53)) +
CAST(dtIn AS float(53))) / 2 AS DATETIME2) FROM t;
但是我收到一个错误,即不允许从 DATETIME2 进行显式转换。
知道怎么做吗?
说,我有两个 DATETIME2 列,我需要在两者之间选择日期。示例:1/1/2012 08:00 和 1/1/2012 09:00 应生成 1/1/2012 08:30。
我正在尝试这个:
SELECT CAST((CAST(dtOut AS float(53)) +
CAST(dtIn AS float(53))) / 2 AS DATETIME2) FROM t;
但是我收到一个错误,即不允许从 DATETIME2 进行显式转换。
知道怎么做吗?
DateDiff 将找到两个日期之间的差异。
select Dateadd(n, DATEDIFF(n, dtIn, dtOut)/2, dtIn) FROM t
顺便说一句,如果字段是日期时间而不是日期时间2,您的方法将起作用。
试试这个。
select Dateadd(n, DATEDIFF(n, '1/1/2012 08:00', '1/1/2012 09:00')/2, '1/1/2012 08:00');
declare @d1 datetime2, @d2 datetime2
select @d1='1/1/2012 08:00',@d2='1/1/2012 09:00'
select dateadd(minute,datediff(minute ,@d1,@d2)/2.0,@d1)
选择 dateadd(SECOND,datediff(SECOND ,dtIn,dtOut)/2.0,dtIn)