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

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

【问题讨论】:

  • 是 MySQL 还是 sql-server ?
  • 提供示例数据(CREATE TABLE + INSERT INTO 脚本,3-5 行)和该数据所需的输出。

标签: sql sql-server database validation


【解决方案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'

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多