sql - 从设施表中选择使用不当的开始和结束日期

标签 sql db2 logic

我正在使用 DB2,尽管使用任何 SQL 风格的解决方案对我来说都可能很容易转换。

我没有设计这个数据库,或者使用该数据库的应用程序。我无权更改此应用程序、其工作方式或数据。因为它违背了我认为的开始日期和结束日期的常规用法,所以我正在努力编写像选择特定时间点这样简单的东西。

以下是表格的相关/编辑部分:

OBJECTID    FACILITY_ID     START_DATE      END_DATE    FACILITY_NAME
1001        500             1/1/1980        5/1/2000    Really Old Name
1002        500             1/1/1980        1/1/2006    Old Name
1003        500             1/1/1980        null        Current Name
1004        501             1/1/1980        3/1/2008    Closed Facility Name
1004        502             1/1/1980        null        Another Current Name

我想要返回的是 2005 年 7 月 1 日有效的记录:

OBJECTID    FACILITY_ID     START_DATE      END_DATE    FACILITY_NAME
1002        500             1/1/1980        1/1/2006    Old Name
1004        501             1/1/1980        3/1/2008    Closed Facility Name
1004        502             1/1/1980        null        Another Current Name

我试图避免子选择,但了解它们可能是必要的。如果我确实需要子选择,我希望将其限制为一个。在开始日期和结束日期之间查找不起作用,因为它不会返回只有一条记录且结束日期为空的设施。在某些情况下,添加 OR 条件以包含空的结束日期可能会返回多个记录。这个问题在服务上看起来很简单,我一定错过了一个非常明显的解决方案。有人有什么想法吗?

最佳答案

这行得通吗:

SELECT * FROM table_name
WHERE START_DATE < '7/1/2005' AND (END_DATE > '7/1/2005' OR END_DATE IS NULL);

关于sql - 从设施表中选择使用不当的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/183698/

相关文章:

sql - 对SQL函数中的 "NEW"关键字感到困惑

mysql - 将表连接到自身并仅返回匹配值的优化方式(也删除此行)

Go 查询 (db2) 不提供表中的所有字符 (utf-8)

php - DB2如何使用PDO指定连接字符集

prolog - Prolog 中的二叉树

sql - 如何以一种好的方式使用 SQL NULL 值和 JSON?

sql - Oracle 检查约束

sql - 如何将十六进制数据字符串转换为字符串 db2 sql

Pythonic/Python 中 continue 的性能

ios - Swift 良好编码实践 : If statement with optional type Bool