-2

我有一个包含以下列的表格

有效开始日期
有效
结束日期人员ID

这是在 Oracle DB 上。
我正在编写一个查询,以使用以下查询让我在当前 sysdate 中处于活动状态。

select startDate, endDate, sysdate
from dateTable
where sysdate between startDate and endDate;

问题是这个 where 子句似乎永远不会被应用。结果包含不满足此条件的行。关于我可能遗漏的任何建议。

4

1 回答 1

0

您的查询看起来不错,正如 APC 建议的那样,这是一种常见模式。这意味着您有数据问题。显示全年将显示为什么意外记录匹配,以及任何“坏”日期 - 例如使用意外的世纪,当使用YY格式掩码操作日期时,这不是一个不寻常的问题:

select to_char(startDate, 'YYYY-MM-DD HH24:MI:SS') as startDate,
    to_char(endDate, 'YYYY-MM-DD HH24:MI:SS') as endDate, sysdate
from dateTable
where sysdate between startDate and endDate;

在您已经注意到的评论中,这显示了来自 的日期4712,这显示为仅12使用您的YY-MON-DD日期格式掩码。我还没有完全看到,更常见的是0012or 1912,但是带有endDatein的记录4712肯定在 之后结束sysdate。可能值得验证表中的所有日期,而不仅仅是那些被该where子句标记的日期。

于 2013-04-18T13:41:48.607 回答