sql - 如何获得今年年初以来过去了多少天?

标签 sql postgresql date select

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

这意味着如果查询运行例如:

2nd Jan 2017 than it should return 2 (as 2 days passed since 1st Jan 2017).

10th Feb 2016 than it should return 41 (as 41 days passed since 1st Jan 2016).

基本上它需要从 Curent Date 中获取 Current Year 并计算自 1/1/(Year) 以来的天数。

我有当前年份:SELECT EXTRACT(year FROM CURRENT_DATE);

我创建了 1 月 1 日:

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

如何获取此日期与 Current_Date 之间的差异?

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

age(timestamp '2016-01-01', timestamp '2016-06-15') 不好 因为我只需要结果天。而年龄以年、月和日给出。

最佳答案

一种更简单的方法可能是从日期中提取年中的第几天(“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 日运行查询产生的。

关于sql - 如何获得今年年初以来过去了多少天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35309400/

相关文章:

mysql - 无论如何,是否可以将单列数据显示为多列

sql - 将 rownum 与预排序结果一起使用是否良好,还是应该使用rank?

macos - 在 Mac 中通过网络访问 postgresql 服务器

date - 如何在 DOS 批处理文件中获取 mm-dd-yyyy?

PHP/PDO 将当前日期加上一个月插入 MYSQL

c# - SQL异常 : String or binary data would be truncated

mysql - 如何在 Mysql 中取消透视下表? [请求更好的方法]

sql - 根据其他列计算一列中的不同值

postgresql - 在 PostgreSQL 中锁定表时,出现错误 : LOCK TABLE can only be used in transaction blocks

javascript - 根据mysql日期格式格式化日期