我有一个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"时间戳的同一天内获取记录.我想我必须要求上限和下限,但我不确定如何计算此查询的下边界...任何想法?
谢谢!
我想你需要这个查询
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)
但我认为它会表现更差,因为列中的数据转换.
| 归档时间: |
|
| 查看次数: |
4847 次 |
| 最近记录: |