格式化varchar类型并将其转换为日期变量

时间:2015-08-07 19:06:22

标签: sql sql-server-2008 tsql

我有一个varchar值,格式为“YYYYMM-LL”,其中:YYYY是四位数年份; MM是两位数的月份.LL是两位数的报告期。这是计算中包含的整月数(从每个月的第一天到最后一天)。

我的问题是如何使用此varchar值来决定两个变量:@First_Date和@Last_Date。

示例:201409-06 此业务情景是截至2014年9月的六个月。 此业务情景中的日历日期范围是2014年4月1日至2014年9月30日。

那我怎么能用t-sql找到这两个日期@First_Date:04/01/2014和@Last_Date:09/30/2014。

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:2)

您可以这样做:

select @firstdate = dateadd(month, 1 - cast(right('201409-06', 2) as int),
                            convert(date, left('201409-06', 6) + '01')
                           ),
       @lastdate = dateadd(day, -1,
                           dateadd(month, 1,
                                   convert(date, left('201409-06', 6) + '01')
                                  )
                          )

解析字符串以执行所需的日期算术运算。无论国际化设置如何,SQL Server都会将“YYYYMMDD”形式的字符串识别为日期。

SQL Fiddle