日期函数

 getdate()

 得到当前时间,可以设置得到各种时间格式.

 datepart(日期部分,日期)

 取指定时间的某一个部分,年月天时分秒.

 datediff(日期部分,日期1,日期2)

 计算指定的日期1和日期2的时间差多少.

 dateadd(日期部分,数值表达式,日期)

 计算指定时间,再加上表达式指定的时间长度.

 --取时间的某一个部分

 elect datepart(yy,getdate()) --year

 select datepart(mm,getdate()) --month

 select datepart(dd,getdate()) --day

select datepart(hh,getdate()) --hour

select datepart(mi,getdate()) --min

select datepart(ss,getdate()) --sec

--取星期几

 set datefirst 1

 select datepart(weekday,getdate()) --weekday

 --字符串时间

 select getdate() -- '03/11/12'

 select convert(char,getdate(),101) -- '09/27/2003'

 select convert(char,getdate(),102) -- '2003.11.12'

 select convert(char,getdate(),103) -- '27/09/2003'

 select convert(char,getdate(),104) -- '27.09.2003'

 select convert(char,getdate(),105) -- '27-09-2003'

 select convert(char,getdate(),106) -- '27 Sep 2003'

 select convert(char,getdate(),107) --'Sep 27, 2003'

 select convert(char,getdate(),108) --'11:16:06'

 select convert(char,getdate(),109) --'Sep 27 2003 11:16:28:746AM'

 select convert(char,getdate(),110) --'09-27-2003'

 select convert(char,getdate(),111) --'2003/09/27'

 select convert(char,getdate(),112) --'20030927'

 select rtrim(convert(char,getdate(),102))+' '+(convert(char,getdate(),108)) -- '2003.11.12 11:03:41'

 --整数时间

 select convert(int,convert(char(10),getdate(),112)) -- 20031112

 select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646

 --时间格式 "YYYY.MM.DD HH:MI:SS" 转换为 "YYYYMMDDHHMISS"

 declare @a datetime,@tmp varchar(20),@tmp1 varchar(20)

 select @a=convert(datetime,'2004.08.03 12:12:12')

 select @tmp=convert(char(10),@a,112)

 select @tmp

 select @tmp1=convert(char(10),datepart(hh,@a)*10000 + datepart(mi,@a)*100 + datepart(ss,@a))

 select @tmp1

 select @tmp=@tmp+@tmp1

 select @tmp

 --当月最后一天

 declare

 @tmpstr varchar(10)

 @mm int,

 @premm int,

 @curmmlastday varchar(10)

 begin

 select @mm=datepart(month,getdate())--当月

 select @premm=datepart(month,dateadd(month,-1,getdate())) --上个月

 if (@mm>=1 and @mm<=8)

 select @tmpstr=convert(char(4),datepart(year,getdate()))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'

 else if (@mm>=9 and @mm<=11)

 select @tmpstr=convert(char(4),datepart(year,getdate()))+'.'+convert(char(2),datepart(month,dateadd(month,1,getdate())))+'.'+'01'

 else

 select @tmpstr=convert(char(4),datepart(year,dateadd(year,1,getdate())))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'

 select @curmmlastday=convert(char(10),dateadd(day,-1,@tmpstr),102) --当月最后一天

 end

 字符串函数

  长度和语法分析

 datalength(char_expr)

    char_expr中返回字符的长度值,忽略尾空

 substring(expression,start,length)

    返回部分字符串

 right(char_expr,int_expr)

    返回char_expr右边的int_expr字符

 基本字符串运算

upper(char_expr)

  char_expr转换成大写形式

 Lower(char_expr)

    char_expr转换成小写形式

 space(int_expr)

    生成有int_expr个空格的字符串

 replicate(char_expr,int_expr)

   重复char_expr,int_expr

 tuff(expr1,start,length,expr2)

    expr2代替epxr1start起始长为length的字符串

 reverse(char_expr)

   反写char_expr中的文本

 ltrim(char_expr)

    删除头空

 rtrim(char_expr)

    删除尾空

 格式转换

 ascii(char_expr)

    返回char_expr中第一个字符的ASCII

 char(int_expr)

    ASCII码转换为字符

 str(float_expr[,length[,decimal]])

    进行数值型到字符型转换

 soundex(char_expr)

 返回char_exprsoundex

difference(char_expr1,char_expr2)

   返回表达式soundex值之差

串内搜索

 charindex(char_expr,expression)

    返回指定char_expr的开始位置,否则为0

 patindex("%pattern%",expression)

    返回指定样式的开始位置,否则为0

 datalength用于确定可变字符串的长度

 soundex用于确定字符串是否发音相似

 difference返回0-4之间的值,0表示最不相似,4表示最相似

 通配符

    % 匹配任何数量的字符或无字符

    _ 匹配任何单个字符(空间占位符)

    [] 规定有效范围,或某个"OR"条件

      [ABG] A,B,G

      [A-C] A,B,C  

      [A-CE-G] A,B,C,E,F,G

      [^ABG]    除了A,B,G

      [^A-C] 除了ABC

   escape子句

 用某个转义字符可在搜索字符串时将通配符作为文字来包含。

 ANSI-89 SQL标准定义了escape子句指定某个转义字符

 缺省情况下,[]来转义某个通配符,例:

    select * from test_tab

    where description like "%20[%]%"

 语法:

    like char_expression escape escape_character

 

    select * from test_tab  where description like "%20#%%" escape "#"

 + 可用于串接字符

    select au_laname+","+au_fname from authors

 数学函数

 abs(numeric_expr)

     返回指定值的绝对值

 ceiling(numeric_expr)

   返回大于或等于指定值的最小整数

 xp(float_expr)

    给出指定值的指数值

 floor(numeric_expr)

   返回小于或等于指定值的最大整数

pi()

   返回常数3.1415926

power(numeric_expr,power)

   返回numeric_expr的值给power的幂

rand([int_expr])

   返回0-1之间的随机浮点数,可指定基值

 round(numeric_expr,int_expr)

    把数值表达式圆整到int_expr指定的精度

 sign(int_expr)

    返回正+1,零0或负-1

 sqrt(float_expr)

    返回指定值的平方根

 SQL SERVER支持所有标准的三角函数和其他有用的函数

  日期函数

 etdate()

    返回当前的系统日期和时间

 datename(datepart,date_expr)

    以字符串形式返回date_expr指定部分的值,转换成合适的名字

 datepart(datepart,date_expr)

    作为整数返回date_expr值的指定部分

 atediff(datepart,date_expr1,date_expr2)

    返回date_expr2-date_expr1,通过指定的datepart度量

 dateadd(datepart,number,date_expr)

 

   返回日期,通过在date_expr上增加指定number的日期部件而产生的

  

datepart

 

日期部件 缩写 值范围  

 

    yy 1753-9999

 

季度    qq 1-4

 

    mm 1-12

 

每年中的天 dy 1-366

 

    dd 1-31

 

星期    wk 1-54

 

星期天    dw 1-7(1=sunday)

 

小时    hh 0-23

 

分钟    mi 0-59

 

    ss 0-59

 

毫秒    ms 0-999

 

例:

 

   select invoice_no,

 

     datediff(dd,date_shipped,getdate())

 

     from invoices

 

     where balance_due>0

 

 

 

转换函数convert

 

此函数把值从一种类型改变成另一种类型

 

   convert(datetype [(length)],expression)

 

   select "Advance="+convert(char(12),advance)

 

     from titles

 

日期转换

    convert(datetype[(length)],expression,format)

 format指定将日期转换为什么格式,有以下值:

 没有世纪 有世纪    转换字符串中日期格式

      0 or 100 mon dd yyy hh:miAM(or PM)
1    101    mm/dd/yy

 2    102    yy.mm.dd

 3    103    dd/mm/yy

 4    104    dd.mm.yy

 5    105    dd-mm-yy

 6    106    dd mon yy

 7    107    mon dd,yy

 8    108    hh:mm:ss 
9 or 109 mon dd,yyyy hh:mi:ss:mmmAM(or PM)

 10    110    mm-dd-yy

 11    111    yy/mm/dd

 12    112    yymmdd

 系统函数

 函数          定义

 访问和安全性信息

 host_id()          客户进程的当前主机进程ID

 host_name()        客户进程的当前主计算机名

 suser_id(["login_name"]) 用户的SQL Server ID

 suser_name([server_user_id]) 用户的SQL Server登录名

 user_id(["name_in_db"])    用户在数据库中的ID

 user_name([user_id])    用户在数据库中的名字

 user            用户在数据库中的名字

 show_role()        用户的当前活动角色

 数据库和对象信息

 db_id(["db_name"])    数据库ID

 db_name([db_id])      数据库名

 object_id("objname")    数据库对象ID

 object_name(obj_id])    数据库对象号

 col_name(obj_id,col_id)    对象的栏名

 ol_length("objname","colname") 栏的长度

 index_col("objname",index_id,key#) 已索引的栏名

 valid_name(char_expr)    char_expr不是有效标识符,则返回0

 数据函数

 datalength(expression)    按字节返回expression的长度

 tsequal(timestamp1,timestamp2) 比较时戳值,若时戳值不匹配,则返回出错消息

  isnull()

 isnull函数用指定的值代替查询栏或合计中的空值

 例:

    select avg(isnull(total_order,$0))

      from invoices

(转自:http://blog.163.com/cwel/blog/static/2345693620075302330773/)

posted on 2009-08-14 20:16  思愁之路  阅读(1281)  评论(1)    收藏  举报