DueTime=case [PayMentTypeChildSNO] when '0' then (case ProductTypeSNO when '9' then CONVERT(varchar(20),DATEADD(day,30,ProductPurchase.CreateTime),120)/** 整套电视剧**/ else CONVERT(varchar(20),DATEADD(day,3,ProductPurchase.CreateTime),120)/**电影记录片**/ end) else CONVERT(varchar(20),DATEADD(day,3,ProductPurchase.CreateTime),120)/** 电视剧单集**/ endfrom ProductPurchase
对于上面的一段SQL语句,其中有几个关键字的用法描述如下:
1、 DATEADD
通过向指定日期添加间隔,返回新的 datetime 值。语法:DATEADD ( datepart , number, date )
举例:SELECT DATEADD(day, 21, pubdate) AS timeframe,在pubdate上增加21天。
2、 Case中嵌套一个Case
Case... when * then (/**嵌套一个Case**/ Case... when * then * else * end) else * end
3、 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。语法:
CONVERT (data_type[(length)], expression [, style])
其中style:
日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。(见联机帮助中的图)
举例:CONVERT(varchar(20),DATEADD(day,3,CreateTime),101)
转换前:2006-12-18 14:28:48.000
转换后:
详细信息搜索《SQL联机帮助》