如何获得每个月的第一个日期和最后日期

时间:2012-05-31 06:32:28

标签: sql sql-server sql-server-2000

使用Sql Server 2000

表1

id sdate edate
001 05/01/2012 25/02/2012
002 19/02/2012 17/04/2012
.....

sDate,eDate格式为dd/mm/yyyy

我希望从table1获取每个月的第一天和最后日期,例如01/01/2012 31/01/201201/02/2012 29/02/2012

预期产出

id sdate edate
001 05/01/2012 31/01/2012
001 01/02/2012 25/02/2012
002 19/02/2012 29/02/2012
002 01/03/2012 31/03/2012
002 01/04/2012 17/04/2012
.....

如何查询上述情况?

需要查询帮助

1 个答案:

答案 0 :(得分:2)

SELECT 
DATEADD(mm, DATEDIFF(mm, 0, sdate), 0),
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, edate) + 1, 0))
from yourtable;

它实际上是一个两部分的查询:

SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0);
SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0));

以上将为您提供当月的开始日期和结束日期,