Sql 如何计算今年以来的天数?

Sql 如何计算今年以来的天数?,sql,postgresql,date,select,Sql,Postgresql,Date,Select,我有一个查询,需要知道从今年1月1日起已经过去了多少天 这意味着如果查询在以下位置运行: 2017年1月2日,应返回2(自1月1日起已过2天 2017年) 2016年2月10日,应返回41(自2016年2月1日起已过41天 2016年1月) 基本上,它需要从当前日期开始计算当前年份,并计算自1/1/(年)起的天数。 我的当前年份为:SELECT EXTRACT(从当前日期算起的年份) 我创建了1月1日,包括: select (SELECT EXTRACT(year FROM CURRENT_DA

我有一个查询,需要知道从今年1月1日起已经过去了多少天

这意味着如果查询在以下位置运行:

2017年1月2日,应返回2(自1月1日起已过2天 2017年)

2016年2月10日,应返回41(自2016年2月1日起已过41天 2016年1月)

基本上,它需要从
当前日期开始计算
当前年份
,并计算自
1/1/(年)起的天数。

我的当前年份为:
SELECT EXTRACT(从当前日期算起的年份)

我创建了1月1日,包括:

select (SELECT EXTRACT(year FROM CURRENT_DATE)::text || '-01-01')::date
如何获得从该日期到当前日期的差值

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

age(时间戳'2016-01-01',时间戳'2016-06-15')
这样的东西不好,因为我只需要几天的结果。而年龄以年、月、日为单位

给定两个日期,间隔几天

只是


在您的情况下,您可以将当前_日期四舍五入到年初,然后从当前日期中减去:

select current_date - date_trunc('year', current_date)::date
将结果转换为整数需要执行
::date
强制转换,否则结果将是一个间隔

给定两个日期,间隔几天

只是


在您的情况下,您可以将当前_日期四舍五入到年初,然后从当前日期中减去:

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

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

更简单的方法可能是从日期中提取day of year(“doy”)字段:

db=> SELECT EXTRACT(DOY FROM CURRENT_DATE);
 date_part 
-----------
        41
如果你需要它作为一个数字,你可以投下它:

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

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

一种更简单的方法可能是从日期中提取day of year(“doy”)字段:

db=> SELECT EXTRACT(DOY FROM CURRENT_DATE);
 date_part 
-----------
        41
如果你需要它作为一个数字,你可以投下它:

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

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

另一个解决方案是使用DATEDIFF

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

另一种解决方案是使用DATEDIFF

 SELECT DATE_PART('day', now()::timestamp - '2016-01-01 00:00:00'::timestamp);
@java:it's here@java:it's here