2016-12-23 53 views
0

我有一個表t_windows_updates,它有兩列ci_id和update_installed_on。表將會讓我的環境中的所有資產發生所有Windows更新。 數據會像檢查時間戳列值是否超過六個月

ci_id| update_installed_on 

1   | 1452364200000 

1   | 1453055400000 

2   | 1441650600000 

2   | 1441650600000 

2   | 1441650600000 

我想要得到其最新的更新並沒有在過去的六個月裏發生的所有ci_ids。

我的查詢是

SELECT t.ci_id FROM `t_windows_update` t 
     GROUP BY t.ci_id 
     HAVING MAX(t.update_installed_on)<= (NOW() - INTERVAL 6 MONTH); 

它正在運行,但得到錯誤的結果。

+0

我試圖把逗號分隔的CI ID添加到我收到一個錯誤,說Subquery返回多於1行UPDATE指標SET id_list =(SELECT GROUP_CONCAT(DISTINCT t.ci_id SEPARATOR',')FROM't_windows_update' t GROUP BY t.ci_id HAVING MAX(t.update_installed_on)/ 1000 <= UNIX_TIMESTAMP(CURDATE() - INTERVAL 6 MONTH)) – Jerry

回答

2

你的問題是日期格式。

我認爲這是一個以毫秒爲單位的unix格式。所以,這表明類似:

having max(t.update_installed_on) <= UNIT_TIMESTAMP(CURDATE() - INTERVAL 6 MONTH) * 1000 

我認識到,上面的也有整數溢出問題,所以讓我們走另一條路:

having max(t.update_installed_on)/1000 <= UNIT_TIMESTAMP(CURDATE() - INTERVAL 6 MONTH) 
+0

我需要更新某些表格,並用逗號分隔所有這些ID。 SELECT GROUP_CONCAT(DISTINCT t.ci_id SEPARATOR',')FROM't_windows_update' t GROUP BY t.ci_id HAVING MAX(t.update_installed_on)/ 1000 <= UNIX_TIMESTAMP(CURDATE() - INTERVAL 6 MONTH)我得到的結果包含超過一行錯誤 – Jerry

+0

@Jerry。 。 。應該將新問題作爲問題提出,而不是評論。 –

+0

對不起,因爲這是我當前想問的問題的一部分。無論如何,我得到它的工作:) – Jerry

相關問題