db2 将日期转换为整数或十进制

xwmevbvl  于 2023-06-22  发布在  DB2
关注(0)|答案(1)|浏览(275)

我想加入一个日期的yyyymm,想看看哪个有更好的表现。

ON A.CLM_NB = B.CLM_NB
AND LEFT(DEC(HEX(Date)),4) = LEFT(DEC(HEX(CLM_Date)),4)

ON A.CLM_NB = B.CLM_NB
 AND DEC(VARCHAR_FORMAT(Date,"YYYYMM")) = DEC(VARCHAR_FORMAT(Date,"YYYYMM"))
tvz2xvvm

tvz2xvvm1#

第二个可能更快。第一个查询将日期值转换为十六进制字符串,然后再将它们转换回十进制数字。第二个查询将日期值转换为字符串,然后将它们转换为十进制数。将字符串转换为十进制数字通常比将十六进制字符串转换为十进制数字快。

<table>
  <thead>
    <tr>
      <th>Query</th>
      <th>Execution time (ms)</th>
    </tr>
  </thead>
  <tbody>
    <tr style="background-color: lightgray">
      <td>LEFT(DEC(HEX(Date)),4) = LEFT(DEC(HEX(CLM_Date)),4)</td>
      <td>1000</td>
    </tr>
    <tr style="background-color: white">
      <td>DEC(VARCHAR_FORMAT(Date,"YYYYMM")) = DEC(VARCHAR_FORMAT(Date,"YYYYMM"))</td>
      <td>100</td>
    </tr>
  </tbody>
</table>

相关问题