2014-01-22 76 views
1

我有一列有3列。我有一年的多個記錄。正如你看到我的一些記錄如下在sql中每年的最早和最後的日期

ID stardate enddate 
1 1/1/2010 5/3/2010 
2 2/4/2010 NULL -**EDIT** 
3 1/2/2011 5/6/2011 
4 3/4/2011 NULL -**EDIT** 

我想得到一個結果,在該年的最早日期和該年的最後一天。所以,輸出也能像

**EDITED:**  1/1/2010 12/31/2010 - For Year 2010 
**EDITED:**  1/2/2011 12/31/2011 - For Year 2011 

我怎樣才能在查詢?如果你需要更多的信息,請詢問。謝謝

編輯:如果一年中,如果其中一列讀NULL,那麼我不得不考慮一年的最後一天作爲結束日期。 i.e.12/31/YYYY。我需要每年再這樣做。

+0

您使用的數據庫是?日期是以日期/日期時間還是以字符串形式存儲的? –

+0

@ GordonLinoff.Using SQL。存儲爲日期時間數據類型。 – RookieAppler

+0

** SQL **只是**查詢語言** - 被許多數據庫使用。這不是一個具體的數據庫產品。請使用您正在使用的**實際的具體數據庫系統**(及其版本!)更新您的標記 - 是Oracle嗎? MySQL的? Postgres的? IBM DB2? SQL Server?還有其他什麼? –

回答

2

假設你在一個MySQL表使用DATE(或相關)列,這樣的事情應該滿足您的要求:

SELECT MIN(startdate), 
     MAX(enddate), 
     YEAR(startdate) 
FROM  my_table 
GROUP BY YEAR(startdate); 

這組所有的條目由年(開始日期)和顯示您的最小值和根據需要每年最多輸入一次。另請參閱MySQL中DATE函數的文檔。

如果您正在使用其他數據庫系統,還有類似的日期功能和可能性。通常你可以通過使用數據庫系統和類似「日期函數」的方式輕鬆找到它們。

+0

謝謝。它讓我開始了。我意識到我實際上需要改變這個問題。應該早些時候發佈正確的一個,但要求已更改。你可以看看EDITED問題。? – RookieAppler

1
select MIN(stardate),max(enddate) 
from [Tablename] 
where YEAR(enddate)=2013 
相關問題