如何获得两个日期之间的差异(informix)?

Posted

技术标签:

【中文标题】如何获得两个日期之间的差异(informix)?【英文标题】:How to get the difference between two dates (informix)? 【发布时间】:2014-04-16 08:21:55 【问题描述】:

如何以整数格式获取两个日期(informix)之间的差异


day = 15
mon = 2
year = 1

【问题讨论】:

也许这会对你有所帮助:***.com/questions/14331328/… @Rezoan:谢谢,但它得到了一个整数值的差异。我想要格式为(day,mon,year) 您没有在问题中表达如何存储两个日期值。您显示了一个零碎的日期值。日期在您的应用程序中还是在数据库中?在这两种情况下它们是如何存储的?举例说明两个日期值和您期望的结果。准备好从“2014-02-14”-“2014-01-31”、“2013-01-01”-“2012-02-29”等差异中解释你想要什么。当你说“我想要(day, mon, year)"格式的差异,您需要准确定义您认为计算将如何进行。毫无疑问,您将为这项工作创建一个用户定义的类型。 @JonathanLeffler:非常感谢您的解释,我想要类似的东西(m,d,y) - (m,d,y) = (m,d,y) 【参考方案1】:

Informix 中有两组日期/时间值:DATE 和 DATETIME。

DATE 类型是最古老的(它是基于 SQL 的 Informix 的前身),它表示自参考日期以来的整数天数(其中第 0 天是 1899-12-31,所以第 1 天是 1900- 01-01)。

您可以通过将两个 DATE 值相减,得出两个 DATE 值之间的差值。

DATETIME 系统较新(但仍然很旧——大约在 1990 年)。您可以取两个 DATETIME YEAR TO DAY 值之间的差值,并得到一个 INTERVAL DAY TO DAY(本质上是天数)的结果。

您还可以获取两个 DATETIME YEAR TO MONTH 值之间的差,并得到一个 INTERVAL YEAR TO MONTH 的结果。

但是,没有办法得出年、月和日的差异,因为没有简单的方法可以推断出该值。事实上,ISO SQL 识别两类 INTERVAL:YEAR-MONTH 组和 DAY-SECOND 组。 INTERVAL 不能跨越 MONTH/DAY 障碍。

【讨论】:

【参考方案2】:

使用MDY函数:

select mdy(2,15,2014) - mdy(1,15,2014) from sysmaster:sysdual

【讨论】:

以上是关于如何获得两个日期之间的差异(informix)?的主要内容,如果未能解决你的问题,请参考以下文章

Informix - 两个日期之间

如何在 android 中获得两个日期之间的差异?,尝试所有事情并发布

如何获得 s-s-rS 中两个日期变量之间的差异

没有闰日的两个日期之间的差异

计算两个日期之间的差异并获得年值? [复制]

如何获得两个日期之间的小时差?