xp

导航

一句SQL语句的几点解释

Posted on 2007-12-19 11:47  xp  阅读(208)  评论(0编辑  收藏  举报
select

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 数据转换为字符数据(ncharnvarcharcharvarcharnchar nvarchar 数据类型);或者字符串格式样式,借以将 floatrealmoney smallmoney 数据转换为字符数据(ncharnvarcharcharvarcharnchar nvarchar 数据类型)。

在表中,左侧的两列表示将 datetime smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。(见联机帮助中的图)

举例:CONVERT(varchar(20),DATEADD(day,3,CreateTime),101)

转换前:2006-12-18 14:28:48.000

转换后:12/21/2006(美国标准时间)

 

详细信息搜索《SQL联机帮助》