从GETDATE()中减去日期以获得“时间以来”

时间:2016-02-04 07:44:26

标签: sql sql-server datetime

我的元素在“创建日期”列中具有DATETIME格式的值。

我希望能够在执行查询的时间之前提取值(作为参考采用GETDATE())

执行此操作时:

UPDATE #LPs
SET LastUsed = (GETDATE() - DateCreated)

我得到的是1900-01-01,我认为这是由于SQL Server对最小DATETIME的限制。

我应该如何才能获得“2年3个月”,“2个月”(任何日期时间格式)等值?

2 个答案:

答案 0 :(得分:2)

Sql server没有内置函数,它将日期差异作为您想要的格式化字符串返回,但它有一个DATEDIFF函数,它将返回两个日期之间的日期部分数:

DECLARE @Now datetime = GETDATE(),
        @Date datetime = GETDATE() + 5 -- five days from now

SELECT  @Now as Now,
        @Date as Date,
        DATEDIFF(Day, @Now, @Date) As DateDiff

您可以获取日期之间的月数,并使用modulu operator

自行计算字符串

答案 1 :(得分:1)

SELECT DATEDIFF(day, DateCreated, GETDATE()) 
FROM table

也许有效