2016-05-12 168 views
-2

我有一個項目,涉及比較datetime字段與當前日期和時間,如果它們之間的差異是10分鐘,那麼我必須選擇某個日期。它涉及到複雜性,如果當前日期和時間比日期大於datetime。有沒有人有一個簡單的解決方案呢?SQL datetime與當前日期時間的比較

+0

示例數據和預期輸出 –

+0

假設當前日期時間爲8:04:10 5/12/2016和現場日期爲7:50:10 5/12/2016,時間差超過10分鐘。這是當我想選擇其他領域。 – user1801774

+0

「其他一些領域」,哪一個?,你的意思是排?,另一列?是否真的很難發佈一些樣本數據和期望的結果? – Lamak

回答

0

這可以非常簡單使用DATEDIFF來完成:

IF (SELECT DATEDIFF(MINUTE, a.StartDate, GETDATE()) 
    FROM TableA a) > 10 
BEGIN 
    SELECT * 
    FROM TableB 
END 

這只是說,如果當前的時間(GETDATE())是過去StartDateTableA超過10分鐘,做別的事情。

注意,如果a.StartDate大於GETDATE()(無論何種原因),中DATEDIFF值將是 - 在這種情況下,您只需更改比較> -10。從評論

編輯:

我想所有這一切都didnt過去10分鐘

這可以通過以下而輕易完成運行SERVERID:

SELECT ServerID 
FROM TableA 
WHERE DATEDIFF(MINUTE, LastRunTime, GETDATE()) > 10 

以下是一些可用於查看DATEDIFF的行爲的「檢查」 - 有關的評論僅限於關心分鐘是不正確的,但跳到更大的間隔DAYMONTH等確實會引起一些有趣的行爲。

例如:

SELECT DATEDIFF(MONTH, '05/30/2016 08:10:00', '06/01/2016 08:05:00') 

返回1(月),儘管是相距僅2天。同樣,

SELECT DATEDIFF(DAY, '05/30/2016 08:10:00', '06/01/2016 08:05:00') 

返回2,儘管時間不相當能夠進入2天痕。最後,

SELECT DATEDIFF(YEAR, '12/31/2016 08:10:00', '01/01/2017 08:05:00') 

也返回1。

希望這有助於您理解使用DATEDIFF

+0

我知道DATEDIFF。在這裏你只是比較分鐘。假設當前時間是2016年5月12日8:10,現場日期是2016年5月11日8:05。它只會比較時間而不是日期,因爲上述2次是相隔一天。希望你越來越。 – user1801774

+0

@ user1801774這是完全錯誤的,當然它需要考慮日期並計算相隔多少分鐘這些日期是 – Lamak

+0

我真的認爲它只會比較相應的日期時間字段(即只有幾分鐘,只有幾小時等),而不考慮其他組件datetime – user1801774