选择具有特定日期的所有行的SQL查询(最近日期,在给定日期之前)

时间:2013-05-16 00:06:41

标签: sql

如果数据是这样的:

AsOfDate   |  Animal |  Version |  
2013/07/01 |  Cat    |    0.8   |  
2013/07/01 |  Dog    |    0.3   |  
2013/04/15 |  Cat    |    0.6   |  
2013/04/15 |  Dog    |    0.2   |  
2012/12/20 |  Cat    |    0.5   |  
2012/12/20 |  Dog    |    0.1   |  

我希望能够指定一些给定的日期参数,例如2013/5/01,并选择具有最近一个日期(2013/4/15)的所有行作为结果:

2013/04/15 |  Cat    |    0.6   |
2013/04/15 |  Dog    |    0.2   |

2 个答案:

答案 0 :(得分:2)

    Select *
    from <TABLE NAME HERE>
    where AsOfDate = (Select Max(AsOfDate) 
                             from <TABLE NAME HERE>
                             where AsOfDate <= <INPUT DATE HERE>)

答案 1 :(得分:0)

在我看来,OP希望最近的日期不会在将来,所以我建议如下:

SELECT * 
FROM TABLE 
WHERE AsOfDate = 
    (SELECT MAX(AsOfDate) 
    FROM TABLE 
    WHERE AsOfDate <= CURRENT_DATE())

请注意,CURRENT_DATE符合SQL92标准(请参阅this IBM article)并返回执行日期。