简体   繁体   English

如何获取今天午夜到昨天午夜的数据

[英]How to get data from today's midnight to Yesterday's midnight

I am looking for data from today's midnight to yesterday's midnight.我正在寻找从今天午夜到昨天午夜的数据。 If today's date "2020-06-10 03:20:25".如果今天的日期“2020-06-10 03:20:25”。 I want createdate between "2020-06-09 00:00:00" TO "2020-06-10 00:00:00"我想在“2020-06-09 00:00:00”到“2020-06-10 00:00:00”之间创建

Assuming createdate is a timestamp column:假设createdate是一个timestamp列:

where createdate >= date_trunc('day', current_timestamp) - interval '1 day'
  and createdate < date_trunc('day', current_timestamp) + interval '1 day';
create table midnight_test(id int, createdate timestamptz);
insert into midnight_test values (1, '06/08/2020 17:15'), (2, '06/09/2020 00:00'), (3, '06/09/2020 13:25'), (4, '06/10/2020 00:00');
select * from midnight_test where createdate between '06/09/2020 00:00'::timestamptz and '06/10/2020 00:00'::timestamptz;

id |       createdate       
----+------------------------
  2 | 2020-06-09 00:00:00-07
  3 | 2020-06-09 13:25:00-07
  4 | 2020-06-10 00:00:00-07

Assuming createdate is data type timestamp , it can be as simple as:假设createdate是数据类型timestamp ,它可以很简单:

WHERE createdate >= CURRENT_DATE - 1
AND   createdate <  CURRENT_DATE

CURRENT_DATE returns the current date . CURRENT_DATE返回当前date You can add / subtract integer values to add / subtract days.您可以加/减integer值来加/减天数。

When compared to a timestamp , date is coerced to the first instant of that day.timestamp相比, date被强制为当天的第一时刻。 So date '2020-06-09' equals timestamp '2020-06-09 00:00:00' .所以date '2020-06-09'等于timestamp '2020-06-09 00:00:00'

BTW, BETWEEN is almost always the wrong tool for timestamps.顺便说一句, BETWEEN几乎总是错误的时间戳工具。 See:看:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM