确定给定时间戳是否在postgresql中的同一天内

Ale*_*oVK 3 java postgresql

我有一个PostgreSQL表,其中包含"没有时区的时间戳"字段.在某个给定点我查询此表,我需要那些记录,其中时间戳在执行查询的同一天内.这是代码:

 DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy/MM/dd HH:00:00");
 DateTime dt = new DateTime();
 String timeStampAsString = dt.toString(formatter);
 String select = "SELECT * FROM " + tableName + " WHERE " + tableName + ".timestamp >= '"+ timeStampAsString + "'";
 pst = dbConnection.prepareStatement(select);
 pst.execute();
Run Code Online (Sandbox Code Playgroud)

我使用的乔达在这里你可以看到,我也填充该表中其他一些问题,所以我现在的格式是正确的(YYYY/MM/DD HH:00:00).不确定我是否可以直接将查询传递给查询而不是转换为String,但这并不会让我感到困扰.

由于查询条件是> ="NOW"时间戳,因此它不太可能返回某些内容.我需要的是在"NOW"时间戳的同一天内获取记录.我想我必须要求上限和下限,但我不确定如何计算此查询的下边界...任何想法?

谢谢!

Rom*_*kar 9

我想你需要这个查询

select *
from test1
where ts >= current_date and ts < current_date + interval '1 day';
Run Code Online (Sandbox Code Playgroud)

要么

select *
from test1
where ts >= now()::date and ts < now()::date + interval '1 day';
Run Code Online (Sandbox Code Playgroud)

它也有可能

select *
from test1
where ts::date = now()::date;
Run Code Online (Sandbox Code Playgroud)

但我认为它会表现更差,因为列中的数据转换.

sql小提琴演示