SQL查询获取特定日期和列中最新日期之间的数据

Posted

技术标签:

【中文标题】SQL查询获取特定日期和列中最新日期之间的数据【英文标题】:SQL query to get data between a particular date and the latest date in the column 【发布时间】:2021-07-07 08:19:16 【问题描述】:

我在 SQL Server 中有一个来自各种表的查询数据,我需要知道我想在 2017 年 1 月 1 日(开始日期)和开始日期列中的最新数据之间获取数据。

【问题讨论】:

mysql 还是 sql-server ? 提供示例数据(CREATE TABLE + INSERT INTO 脚本,3-5 行)和该数据所需的输出。 【参考方案1】:

一种方法使用MAX 作为分析函数来查找最近的开始日期:

WITH cte AS (
    SELECT *, MAX(start_date) OVER () AS max_start_date
    FROM yourTable
)

SELECT *
FROM cte
WHERE start_date BETWEEN '20170101' AND max_start_date;

【讨论】:

... SELECT * FROM yourTable WHERE start_date >= '20170101' 不是更简单吗? @lptr 您的建议不是 OP 中规定的逻辑,它需要 2 个日期之间的范围。 ...但是 start_date 的任何值始终是 【参考方案2】:

我需要知道我想获取 2017 年 1 月 1 日(开始日期)和开始日期列中的最新数据之间的数据。

这是另一种说法,即您想要 2017 年 1 月 1 日或之后的所有数据。所以:

where start_date >= '20170101'   -- or if you prefer '2017-01-01'

【讨论】:

以上是关于SQL查询获取特定日期和列中最新日期之间的数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询从两列中检索两个日期之间的数据

SQL Server 查询日期范围之间一个月的总天数

SQL 查询日期范围保存在 2 列中

SQL Server:从最大日期/最新日期的记录中获取数据

SQL查询以获取特定年份的当前日期(考虑月份和日期)的数据

SQL 查询以获取特定对象的最新操作/更新