0

我在 JasperSoft studio 中遇到 SQL 查询问题。我正在尝试从两个日期之间从 posgreSQL 数据库中获取记录。我使用这个语句:

SELECT spent_on FROM time_entries WHERE spent_on BETWEEN date '2014-01-01' AND date '2014-11-1' ORDER BY spent_on DESC

或更简单但有同样的问题:

SELECT spent_on FROM time_entries WHERE spent_on BETWEEN '2014-01-01' AND '2014-11-1' 

也使用 < 和 > 以同样的方式结束。

used_on 列定义为:spend_on date NOT NULL。

当我在 pgAdmin 中运行此查询时,我得到了我希望收到的所有行,但是当我在 JasperSoft Studio 中尝试相同的语句时,我没有得到任何结果。

我发现当我将范围更改为:“在日期‘2012-01-01’和日期‘2014-11-1’之间”时,我可以获得一些行,而我得到的最后一个条目是从 2012-05-29 开始的。(数据库中的最后一个来自 2014-11-12)

Redmine 的数据库存储数据。

解决了

原因:Jaspersoft Studio 和 pgadmin 中使用了不同的模式。

4

2 回答 2

1

尝试不使用date关键字。Jasper 可能以错误的方式理解这一点。(只是在黑暗中拍摄。)date在这种情况下,字符串文字会自动转换为:

SELECT spent_on
FROM   time_entries
WHERE  spent_on BETWEEN '2014-01-01' AND '2014-11-1'
ORDER  BY spent_on DESC;

我也会建议ORDER BY spent_on DESC NULLS LAST,但是您说该列已定义NOT NULL,因此不适用。细节。

此外,观察到的行为(没有获得最新的行)表明您没有连接到同一个数据库或使用不同的查询运行search_path,因此您最终会在不同的模式中获得同名的不同表。细节:

于 2014-11-13T12:04:18.843 回答
0

由@GregG 回答

Jaspersoft Studio 和 pgadmin 使用了不同的模式

于 2016-07-03T13:02:59.140 回答