2013-05-16 41 views
0

如果數據是這樣的: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月1日,並選擇所有行有一個結果ONE最近的日期(2013年4月15日):

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

2013/5/01如何適合此等式? –

+1

http://stackoverflow.com/questions/5565360/mysql-get-nearest-records-to-specific-date-grouped-by-type這是否工作? – progrrammer

+0

@ Ek0nomik這是我的輸入參數示例。我希望能夠看到任何給定日期的版本。每行數據可以被認爲是「狀態更新」。版本已更新幷包含更新時間。所以,上面顯示的輸出顯示了2013年5月1日存在的版本。 – user1744318

回答

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

簡單和完美的作品,謝謝! – user1744318

0

在我看來,在OP希望最近的日期不在將來,所以我會建議如下:

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

注意CURRENT_DATE是在SQL92標準(見this IBM article),並返回在執行的日期。

相關問題