当前位置: 首页 > 知识库问答 >
问题:

如何在postgres sql查询中计算两个日期之间的天数。

弘靖琪
2023-03-14

假设我给出了两个日期,如果差值是一个月,那么应该显示为30天。即使是月份也需要转换成我尝试过的带有年龄的天数(date,now()::timestamp,不带时区),但它给出了月份-日期-年份格式。例:10个月24天13:57:40.5265。但我需要遵循这条路。例如,如果有两个月的差异,那么我需要60天的输出。

共有2个答案

羊光辉
2023-03-14

这两者都将给出这个结果。

select make_interval(days => ((extract(epoch from '2016-04-10'::date) - extract(epoch from '2016-02-10'::date))/(60*60*24))::integer)::text;

select format('%1$s days', ((extract(epoch from '2016-04-10'::date) - extract(epoch from '2016-02-10'::date))/(60*60*24))::integer);
萧嘉茂
2023-03-14

不要使用age()函数来计算日期/时间。它只返回“符号”结果(这对于人类表示来说足够好,但对于日期/时间计算几乎没有意义;与标准差相比)。

标准差分运算符(-)返回日期时间戳和带时区的时间戳的基于日期的结果(前者返回天数为int,后两个返回天数为间隔s):

您可以使用extract()函数从基于日期的时间间隔中提取天数:

select current_date - '2017-01-01',
       extract(day from now()::timestamp - '2017-01-01 00:00:00'),
       extract(day from now()            - '2017-01-01 00:00:00Z');

http://rextester.com/RBTO71933

 类似资料:
  • 问题内容: 我正在计算从“开始”到“结束”日期之间的天数。例如,如果起始日期为2010年4月13日,起始日期为2010年5月15日,则结果应为 如何使用JavaScript获得结果? 问题答案:

  • 问题内容: 我有两个输入日期来自Date Picker控件。我选择了开始日期2/2/2012和结束日期2/7/2012。我为此编写了以下代码。 我应该得到6的结果,但是我却得到5。 谁能告诉我如何获得确切的区别? 问题答案: 从Moment文档: 或包含起点: 避免手动打乱时间戳和时区。 根据您的特定用例,您可以 使用和/或强制diff在“端点”处包含或排除(如@kotpal在评论中所建议)。 设

  • 问题内容: 如果我有一对夫妇的字符串和被设置为(例如)和(意为2011年7月1至2011年7月17日)。我如何计算从开始日期到结束日期的天数?在给出的示例中,将是17天。 问题答案: 这是原始的方法

  • 防止日期保存时间出错 输入是两个对象(没有时间,我知道,但我需要使用实例来实现这一点)

  • 我需要计算JPA中2个日期之间的天数。 例如: 到目前为止,我试着: 你会怎么做?

  • 问题内容: 我编写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别是2/3/2017和3/3/2017时,显示的天数是29.尽管它们是同一天,但显示的是1.(请假的天数。如果请假一天,他必须选择相同的开始日期和结束日期。因此,在这种情况下,他请了两天假。 我究竟做错了什么?感谢您的时间。 注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时