如何从今天半夜到昨天半夜的数据?

问题描述 投票:0回答:1

我想找的是今天午夜到昨天午夜的数据。如果今天的日期 "2020-06-10 03:20:25",我想在 "2020-06-09 00:00:00 "到 "2020-06-10 00:00:00 "之间创建数据。我想从 "2020-06-09 00:00:00 "到 "2020-06-10 00:00:00 "之间的创建日期。

sql postgresql date-arithmetic
1个回答
1
投票

假设 createdate 是一个 timestamp 列。

where createdate >= date_trunc('day', current_timestamp) - interval '1 day'
  and createdate < date_trunc('day', current_timestamp) + interval '1 day';

1
投票
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


1
投票

假设 createdate 是数据类型 timestamp,它可以是简单的。

WHERE createdate >= CURRENT_DATE - 1
AND   createdate <  CURRENT_DATE

CURRENT_DATE 返回当前的 date. 你可以加减 integer 值来加减天数。

当与 timestamp, date 被胁迫到当天的第一时间。所以 date '2020-06-09' 等于 timestamp '2020-06-09 00:00:00'.

另外.., BETWEEN 对于时间戳来说,几乎总是错误的工具。 请看。

© www.soinside.com 2019 - 2024. All rights reserved.