sql中的常见函数

一、stuff函数

Select stuff("abcdef",2,3,"ghijk")

go

结果:aghijkef

stuff的功能:删除指定长度的字符串并在指定的起始点插入另一组字符

二、datediff()

DATEDIFF(datepart,startdate,enddate)

起主要参数如上。datepart为年月日时分秒等后面两个就不用说了 ,懂一点英语都能看懂,现在主要介绍一下startdate,enddate的格式问题

如果是

print datediff(month,'2008/05/11','2008-04-15')、

print datediff(month,'2004.09.12 ','2008-06-15')、

print datediff(month,'20040912','2008-06-15')、

print datediff(month,'2004-09-12 11:06:08','2008-06-15')

都是可以得到数据的

这样的话是可以自动转化的得到结果。说明”/“/和“—”以及“.”可以由我们的msserver自动转化

三、convert()

1、CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

由参数style可以知道此函数可以转化日期。涉及到很多格式,具体不细说,只举二个例子说说,其他的可以在网上自己查询

select CONVERT(varchar(12) , getdate(), 108 ) 得到当天的时间(时分秒格式)
20:49:40

select CONVERT(varchar(12) , getdate(), 102 ) 
2011.07.15

2、convert(data_type(length),data_to_be_converted

举个简单的例子print convert(char(5),'adfadfadfafd')得到的结果是adfad

再举个例子print CONVERT(varchar(30) , getdate(), 120 )得到的结果为:2011-07-15 21:02:29
select CONVERT(char(10),CONVERT(varchar(30) , getdate(), 120 ) ) 得到的结果为2011.07.15

select CONVERT(char(10), 123 ) 得到的结果为'123'

由此可以知道convert有两种参数一个是两个的,一个是三个的

四、replace()

replace(string_expression,string_pattern,string_repalcement)

我们先 不看语法,但是你要知道有三个参数实践出真理:select replace('123456789', 1,'ab' ) 得到的结果为ab23456789在此有的会认为是第一个位置其实不是。是Msserver把整型自动转化成了字符型。 select replace('123556789', 4,'ab' )得到的结果为123556789 在此没有转化,是因为没有4这样的字符,所以不转化。注意与stuff的区分

五、dateadd()

DateAdd(interval, number, date)

 

interval 必要。字符串表达式,是所要加上去的时间间隔。

number 必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。

date 必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。 特别注意

select DateAdd("m", 1, '95-01-31') 得到的结果为1995-02-28 00:00:00.000一个是注意m是加的一个月,还有个是默认的会加一个时间

 

以上是个人观点,欢迎大家指正和讨论。

 

 

posted @ 2011-07-11 15:48  haiziguo  阅读(260)  评论(0编辑  收藏  举报