使用查询SQL Server 2008选择DATEADD分钟

时间:2012-01-24 14:48:23

标签: sql sql-server sql-server-2008

如何使用带有查询结果的dateadd()添加分钟?

像这样:

SELECT dateadd(minute, (SELECT 
                isnull(time1 - time2, 0)
                FROM table 
                WHERE field = 111) , getdate())

在这种情况下,选择结果为288,但不添加

我需要在函数

中添加这个288

像这样:

SELECT dateadd(minute, 288, getdate())

3 个答案:

答案 0 :(得分:9)

SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, time1, time2), GETDATE())
FROM table
WHERE field = 111

如果这是你想要达到的目的,这将在time1和time2之间的分钟数增加到当前日期。

答案 1 :(得分:4)

我认为你想要的是这个查询:

SELECT DATEADD(minute, (ISNULL(time1 - time2, 0), GETDATE())
  FROM table 
 WHERE field = 111

上面将time1time2假设time1和time2是某些整数值)之间的差异添加到表格中每条记录的当前日期{{1然而,请注意,此不会更新记录!

如果您想更新记录(即修改表而不是查询表),那么您需要使用field

UPDATE

我希望这有一定道理。你的问题并不是很清楚你想要做什么。

答案 2 :(得分:0)

如果您的数据类型不正确,这可能对您有用:

SELECT dateadd(minute, (SELECT  
            CAST(isnull(time1 - time2, 0) AS INT)
            FROM table  
            WHERE field = 111) , getdate()) 

我仍然建议你看一些其他答案以获得更好的结构 - 即上面的Miky Dinescus代码将是:

SELECT DATEADD(minute, (CAST(ISNULL(time1 - time2, 0), GETDATE()) AS INT)
  FROM table    
 WHERE field = 111