sql中每年的最早和最后日期

时间:2014-01-22 23:23:06

标签: sql sql-server date

我有一个包含3列的列。我有一年的多个记录。如您所见,我的一些记录如下

 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。而且我需要再次每年都这样做。

2 个答案:

答案 0 :(得分:2)

假设您在MySQL表中使用DATE(或相关)列,这样的内容应该可以满足您的要求:

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

按年份(起始日期)对所有条目进行分组,并根据需要显示每年的最小和最大条目。另请参阅MySQL中DATE函数的文档。

如果您使用其他数据库系统,则有类似的日期功能和可能性。通常,您可以通过Google搜索数据库系统以及类似“日期函数”的内容轻松找到它们。

答案 1 :(得分:1)

select MIN(stardate),max(enddate)
from [Tablename]
where YEAR(enddate)=2013