【发布时间】:2018-10-18 13:46:20
【问题描述】:
我有一个来自 mysql 的查询,该查询一直在我最近迁移到 DB2 的表上运行。
由于下面的行,查询现在在 DB2 上失败,说找不到 DATEDIFF。我假设只是因为这不是 db2 上的有效函数。
在 DB2 上是否有与此相同的功能可以保持性能和功能?
SELECT DISTINCT
LEAST(180, DATEDIFF(curdate(), start_date)) as days
FROM table2
where expire_date > curdate()
【问题讨论】:
-
您是否在 DB2 中查找过日期/时间函数?这可能会有所帮助:ibm.com/developerworks/data/library/techarticle/0211yip/…
-
我有并且我确实看到了 TIMESTAMPDIFF,但我还没有看到我可以如何类似地应用它来使用 LEAST 函数。如果日期在从今天开始的 180 天内,我将使用它来返回天数,但如果它更多,那么我只是返回 180。
-
“有趣的日期和时间”。也许在 2003 年很有趣。如果您使用的是 Db2 11.1(即 Db2 LUW),则有一大堆日期函数。请参阅条目“新的内置聚合和标量函数”。这里ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/… 特别是'DAYS_BETWEEN`