我有一个查询,它使用需要知道自当年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
这样的东西不好,因为我只需要几天就能得到结果。而年龄则以年,月和日为单位。
答案 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);