从日期中选择特定记录的 SQL 查询

Posted

技术标签:

【中文标题】从日期中选择特定记录的 SQL 查询【英文标题】:SQL Query to select specific records from dates 【发布时间】:2021-12-03 11:50:00 【问题描述】:

我有一个表格,其中包含代码列表以及代码处于活动状态的开始和结束日期。我想选择最近的活动代码。这很简单,但我遇到的部分是您可以拥有具有重叠日期的相同代码,这意味着两者都是活动的,我需要选择所有这些记录。或者您可以使用相同的代码,但日期紧随其后,这意味着之前的代码不再有效,我想忽略它。

见下表示例:

在下表中,如果您有两个相同的代码,但日期紧随其后,那么我基本上需要说这张表好,然后取最近的,如果日期重叠,则选择...

ID | Code | Start Date | End Date | I need to select
01 | A110 | 15/01/21   | NULL     | select
02 | A110 | 14/05/19   | NULL     | select
03 | A110 | 10/10/18   | 13/05/19 | Ignore
03 | B200 | 15/01/21   | NULL     | select
04 | B200 | 10/12/20   | 14/01/21 | Ignore
05 | C600 | 15/01/21   | NULL     | Select

【问题讨论】:

嗨,请指定您正在使用的 DBMS 以及您尝试过的查询 【参考方案1】:

在我看来是这样的

SELECT *
FROM TABLE
WHERE END_DATE IS NULL

但也许我问错了,目前还不清楚

【讨论】:

好像反过来了,WHERE end_date IS NULL @Max 我看到忽略结束日期不为空的地方... 是的,OP 显然想要结束数据为 NULL 的所有条目。距离我的主要 SQL 时代已经有一段时间了,但如果我没记错的话,SELECT * FROM table WHERE end IS NULL; => 忽略所有 end 不为空的条目 我真的搞错了,对不起

以上是关于从日期中选择特定记录的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL 仅从当月选择记录

如何编写选择最后一个特定日期并从那里返回 1 周的查询?

SQL Select 查询以选择日期之间的数据,其中从日期月份高于日期月份和年份差异>1

如何在查询语句 Mysql 中格式化日期?

如何在SQL Server中选择特定日期的行,忽略时间。

SQL 根据当前日期减去两天选择记录