从月份名称和年份获取sql中该月份的日期范围

时间:2014-08-28 09:18:39

标签: sql sql-server date

我有月份名称和年份,我想要那个月的日期范围。

输入

@Input=August 2014

输出

@fromDate=08/01/2014(MM/dd/YYYY)
@toDate=08/31/2014

请帮我这样做

2 个答案:

答案 0 :(得分:3)

在MySQL中,您可以使用str_to_date将字符串转换为日期。使用%M表示指定月份,%Y表示一年:

select  str_to_date('August 2014', '%M %Y') dt
-->
2014-08-00

由于一个月的第一天始终是第一天,因此可以找到:

date_format(dt ,'%Y-%m-01')
-->
2014-08-01

last_day函数返回该月的最后一天。我在第一天通过,因为last_day函数不喜欢00返回的str_to_date日部分:

last_day(date_format(dt ,'%Y-%m-01'))
-->
2014-08-31

将它全部结合起来:

select  date_format(dt ,'%Y-%m-01')
,       last_day(date_format(dt ,'%Y-%m-01'))
from    (
        select  str_to_date('August 2014', '%M %Y') dt
        ) as SubQueryAlias
-->
2014-08-01      2014-08-31

答案 1 :(得分:1)

试试这个

DECLARE @SystemDate DateTime, @StartDate DateTime, @EndDate DateTime
declare @monthid int
SELECT @monthid=MONTH(CAST(@Month+ '1 2010' AS datetime)) 

SET @SystemDate = cast(@monthid as varchar(20))+'-'+'1'+ '-'+cast(@year as varchar(20))

SELECT @StartDate = DATEADD(dd, -Day(@SystemDate) + 1, @SystemDate)
SELECT @EndDate = CONVERT(VARCHAR(20), DATEADD(dd, -(DAY(DATEADD(mm, 1, @SystemDate))),DATEADD(mm, 1, @SystemDate)),101)
SELECT @StartDate StartDate, @EndDate EndDate