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

从月份名称和年份获取sql中该月份的日期范围,sql,sql-server,date,Sql,Sql Server,Date,我有月份名称和年份,从那以后我想要那个月的日期范围 输入 @Input=August 2014 @fromDate=08/01/2014(MM/dd/YYYY) @toDate=08/31/2014 输出 @Input=August 2014 @fromDate=08/01/2014(MM/dd/YYYY) @toDate=08/31/2014 请帮助我在MySQL中执行此操作,您可以使用将字符串转换为日期。指定月份使用%M,指定年份使用%Y: select str_to_date('

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

输入

@Input=August 2014
@fromDate=08/01/2014(MM/dd/YYYY)
@toDate=08/31/2014
输出

@Input=August 2014
@fromDate=08/01/2014(MM/dd/YYYY)
@toDate=08/31/2014
请帮助我在MySQL中执行此操作,您可以使用将字符串转换为日期。指定月份使用
%M
,指定年份使用
%Y

select  str_to_date('August 2014', '%M %Y') dt
-->
2014-08-00
由于一个月的第一天始终是第一天,因此可以发现如下情况:

date_format(dt ,'%Y-%m-01')
-->
2014-08-01
函数返回月份的最后一天。我在第一天通过,因为
last\u day
函数不喜欢
00
day部分由
str\u to\u 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
试试这个

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

要显示存储在dbOk中的该范围内的记录,您尝试了什么?我只是想将月份名称转换为月份编号,从db的分割记录中,我对toDate变量有问题抱歉,但我需要它sql@fancyPants:Amol可能是指SQL Server,虽然这个问题很简单,但谢谢你的回答,回答得很好