如何获得自今年年初以来的天数?

时间:2016-02-10 07:39:45

标签: sql postgresql date select

我有一个查询,它使用需要知道自当年1月1日以来经过了多少天。

这意味着如果查询在例如:

中运行
  

2017年1月2日应该返回2(自1月1日起经过2天)   2017年)。

     

2016年2月10日应该返回41(自第1天起经过41天)   2016年1月)。

基本上需要从Current Year获取Curent Date并计算自1/1/(Year).以来的日期

我今年有:SELECT EXTRACT(year FROM CURRENT_DATE);

我创建了1月1日:

select (SELECT EXTRACT(year FROM CURRENT_DATE)::text || '-01-01')::date

如何从这个日期到[{1}}?

获得差异

基本上这个问题可以给定两个日期,它们之间的天数

Current_Date 这样的东西不好,因为我只需要几天就能得到结果。而年龄则以年,月和日为单位。

3 个答案:

答案 0 :(得分:4)

更简单的方法可能是从日期中提取一年中的某一天(“doy”)字段:

def cached_queries(request):
    return {'cache': cache.get('cie_1')}

如果你需要它作为一个数字,你可以投下它:

db=> SELECT EXTRACT(DOY FROM CURRENT_DATE);
 date_part 
-----------
        41

注意:结果41是通过今天2月9日运行查询生成的。

答案 1 :(得分:1)

  

鉴于两个日期,它们之间的天数

只需subtract one from the other

在你的情况下,你可以将current_date四舍五入到年初并从当前日期中减去它:

select current_date - date_trunc('year', current_date)::date

::date强制转换是将结果作为整数获取所必需的,否则结果将是一个区间。

答案 2 :(得分:1)

另一种解决方案是使用 DATEDIFF

 SELECT DATE_PART('day', now()::timestamp - '2016-01-01 00:00:00'::timestamp);