【发布时间】:2015-05-05 22:22:50
【问题描述】:
我知道 Progress 4GL 版本 10 及以后的版本配备了一个非常聪明的集成函数,称为“INTERVAL”,它返回两个 DATE、DATETIME 或 DATETIME-TZ 值之间的时间间隔。 如果使用以下语法,
> DISPLAY INTERVAL(05/06/2014, 05/05/2015, "years").
会给你零,因为它短了一天才能算作一年。
但是在 SQL 中,可以使用与此相关的 closet 函数将是 DATEDIFF 并且您将无法获得相同的结果。在 SQL Server 中进行以下查询,
PRINT DATEDIFF(YEAR, '05/06/2014', '05/05/2015');
仍然会打印一个而不是零,忽略它仍然短一天才能算作一年的位。 因此我的问题是 SQL 中是否有一个集成函数可以用来实现与 Progress 4GL 相同的结果?
【问题讨论】:
-
我不知道 SQL 中有任何类似的函数,但你可以做的是使用
DATEDIFF(DAY, '05/06/2014', '05/05/2015')然后将其除以 365。如果差异小于 365 天那么整数除法将返回 0。This link 可能会有所帮助,但看起来我的 ssms 无法识别这些函数。 -
这是
INTERVAL和DATEDIFF之间唯一需要解决的区别还是需要在功能上相同?您是否正在将 postgres 转换为 SQL Server? -
是的,我正在寻找功能相同的东西?我没有将 Progress 转换为 SQL,而且我试图在 SQL 中找到类似的函数也是不可能的,因为我知道 Progress 4GL 中存在一个。