Sql 从时间戳日期中减去1天
我正在为Postgresql使用Datagrip。我有一个带有时间戳格式的日期字段的表(例如:2016-11-01 00:00:00)。我希望能够:Sql 从时间戳日期中减去1天,sql,postgresql,date,casting,timestamp,Sql,Postgresql,Date,Casting,Timestamp,我正在为Postgresql使用Datagrip。我有一个带有时间戳格式的日期字段的表(例如:2016-11-01 00:00:00)。我希望能够: 应用数学运算符减去1天 根据今天—130天的时间窗口进行过滤 不显示邮票的hh/mm/ss部分(2016-10-31) 当前开始查询: select org_id, count(accounts) as count, ((date_at) - 1) as dateat from sourcetable where date_at <=
select org_id, count(accounts) as count, ((date_at) - 1) as dateat
from sourcetable
where date_at <= now() - 130
group by org_id, dateat
选择组织id,将(账户)作为计数,((日期)-1)作为日期
从sourcetable
其中日期在使用间隔
类型。例如:
--yesterday
SELECT NOW() - INTERVAL '1 DAY';
--Unrelated: PostgreSQL also supports some interesting shortcuts:
SELECT
'yesterday'::TIMESTAMP,
'tomorrow'::TIMESTAMP,
'allballs'::TIME AS aka_midnight;
然后,您可以执行以下操作:
SELECT
org_id,
count(accounts) AS COUNT,
((date_at) - INTERVAL '1 DAY') AS dateat
FROM
sourcetable
WHERE
date_at <= now() - INTERVAL '130 DAYS'
GROUP BY
org_id,
dateat;
提示2
您还可以使用make_interval
函数创建一个间隔,当您需要在运行时创建它时(不使用文字),该函数非常有用:
更多信息:
.您可以将时间戳
强制转换为日期
,这允许您从中减去一个整数
例如,要获得昨天:
now()::日期-1
因此,您的查询将变成:
选择组织id,日期日期::日期-1作为日期,计数(帐户)作为计数
从sourcetable
对于那些好奇的人来说,“所有球”是午夜的字面意思,因为它看起来像00:00:00。
SELECT date_trunc('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH - 1 DAY';
SELECT make_interval(days => 10 + 2);
SELECT make_interval(days => 1, hours => 2);
SELECT make_interval(0, 1, 0, 5, 0, 0, 0.0);