sqlserver datetime转换成带格式的字符串(二)
--A.季度的第一天
SELECT CONVERT(DATETIME,CONVERT(char(8),DATEADD(Month,
DATEPART(Quarter,@DATETIME)*3-Month(@DATETIME)-2,@DATETIME),120)+'1') AS C
输出结果:2012-10-01 00:00:00.000
--B.季度的最后一天(CASE判断法)
SELECT CONVERT(DATETIME,CONVERT(char(8),DATEADD(Month,
DATEPART(Quarter,@DATETIME)*3-Month(@DATETIME),@DATETIME),120)+
CASE WHEN DATEPART(Quarter,@DATETIME)in(1,4) THEN '31' ELSE '30' END) AS D
输出结果:2012-12-31 00:00:00.000
--C.季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+
DATEPART(Quarter,@DATETIME)*3-Month(@DATETIME),@DATETIME),120)+'1') AS E
输出结果:2012-12-31 00:00:00.000
--5.指定日期所在月份的第一天或最后一天
--A.月的第一天
SELECT CONVERT(DATETIME,CONVERT(char(8),@DATETIME,120)+'1') AS F
输出结果:2012-12-01 00:00:00.000
--B.月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@DATETIME),120)+'1') AS G
输出结果:2012-12-31 00:00:00.000