检查时间戳列值是否超过六个月

时间:2016-12-23 15:07:36

标签: mysql

我有一个表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);

它正在运行但结果却出错了。

1 个答案:

答案 0 :(得分:2)

您的问题是日期格式。

我认为这是一种以毫秒为单位的unix格式。所以,这表明如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/1.3.1/css/toastr.css" rel="stylesheet"/> 
        <script src="http://cdnjs.cloudflare.com/ajax/libs/toastr.js/1.3.1/js/toastr.js"></script>
<table>
  <tr>
    <th>Item #</th>
    <th>1234567</th>
    <th>7654321</th>
    <th>5678945</th>
  </tr>
  <tr>
    <th>Product</th>
    <th><u>22 ounce Dark</u></th>
    <th><u>12count 4oz Dark</u></th>
    <th><u>24count 6oz TJ</u></th>
  </tr>
  <tr>
    <th>2016-01-03</th>
    <td>13587</td>
    <td>2203</td>
    <td>4111</td>
  </tr>
  <tr>
    <th>2016-01-04</th>
    <td>14111</td>
    <td>3247</td>
    <td>4332</td>
  </tr>
  <tr>
    <th>2016-01-05</th>
    <td>13212</td>
    <td>3101</td>
    <td>3911</td>
  </tr>
  <tr>
    <th>2016-01-06</th>
    <td>16335</td>
    <td>3299</td>
    <td>4001</td>
  </tr>
  <tr>
    <th>2016-01-07</th>
    <td>15421</td>
    <td>3100</td>
    <td>4078</td>
  </tr>
</table>

我意识到上面的整数可能存在溢出问题,所以让我们走另一条路:

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