欢迎光临
我们一直在努力

sybase日期函数

Sybase日期函数

日期函数

getdate()

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

datepart(日期部分,日期)

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

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

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

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

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

–取时间的某一个部分

select 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

–取星期几

//该计算出的结果要+1,因其计算出的星期天为一周的第1天,星期六自然就成为一周第7天

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

———————————————————-

格式为:DateAdd(interval, number, date)

interval:间隔时间(如时、分、秒、天、周、月、季、年)

number:间隔数(正数为向后+N,负数为向前-N)

date:当前日期或指定日期

查询当前日期起,以时、分、秒、天、周、月、季、年为间隔的日期

时:select convert(char(8),dateadd(hour,1,getdate()),112)

分:select convert(char(8),dateadd(minute,1,getdate()),112)

秒:select convert(char(8),dateadd(second,1,getdate()),112)

天:select convert(char(8),dateadd(day,1,getdate()),112)

周:select convert(char(8),dateadd(week,1,getdate()),112)

月:select convert(char(8),dateadd(month,1,getdate()),112)

季:select convert(char(8),dateadd(quarter,1,getdate()),112)

年:select convert(char(8),dateadd(year,1,getdate()),112)

———————————————————–

select dateadd(year, 1, ’31-Jan-96′)

select dateadd( month, 1, ‘1987/05/02’ )

select datediff(day,’2008-10-1′,’2008-10-31′)

———————————————————–

上月第一天:

select dateadd(mm,-1,convert(char(8),(datepart(yy,getdate())*10000+datepart(mm,getdate())*100+01)))

上月最后一天:

select dateadd(dd,-1,convert(char(8),(datepart(yy,getdate())*10000+datepart(mm,getdate())*100+01)))

其实就是先取本月第一天,然后分别减一个月和一天就是上月第一天和最后一天

–取本周第一天,以星期一作为本周第一天

SELECT @WeekDate = DateAdd(day,1-(Case datepart(dw,Getdate())-1 when 0 then 7 else datepart(dw,GetDate())-1 end),GetDate())

SELECT @WeekDate = Convert(varchar,@WeekDate,112)

得到当前日期的本周最后一天

SELECT @Date1 = DateAdd(day,7-(Case datepart(dw,@Date1)-1 when 0 then 7 else datepart(dw,@Date1)-1 end),@Date1)

根据小时判断日结日期,HH>21时,返回当天日期,<21时,返回前一天日期

select case when  datepart(hh,getdate()) >21 then convert(varchar,dateadd(dd,0,convert(datetime,getdate())),112) else convert(varchar,dateadd(dd,-1,convert(datetime,getdate())),112) end

1.

nullif(value1,value2)

解释: case when value1=value2 then null

      else value1

      end

  例: select nullif(2,2)

  返回值: null

      select nullif(1,2)

       返回值: 1

注意:value1何value2的数据类型必须兼容

isnull(value1,value2)

case when value1=null then value2 else value1 end

例:select isnull(null,0)=0

    select isnull(2,0)=2

2.关于日期的函数

 dateadd(dd,n,dDate)

解释:返回dDate后n的日期 (n可以为负数)

例: select dateadd(dd,2,’2006-12-10′)--10号的后2天

      返回值:Dec 12 2006 12:00AM

    select dateadd(dd,-1,’2006-12-15′)=Dec 14 2006 12:00AM

 datediff(day,date1,date2),

解释:date2与date1相差的天数,若date2在前,则返回值为负数

例子  select datediff(day,’2006-12-10′,’2006-11-30′)=-10

 getdate() 返回服务器的当时时间

datename(datepart,date) 返回时间的名称 例如     select datename(dy,’2006-2-01′)=32/**dy,dayofyear,1-366**/

round(number,n),四舍五入   例如 select round(123.155,2)=123.56

datepart(day,date) 返回当月第一日的差距天数

  例如 datepart(day,’2006-12-15′)返回15

       datepart(mm,’2006-12-15′)返回12

       datepart(yy,’2006-12-15′)返回2006

convert(varchar,datepart(year,@Date1))+’01’+’01’  –取今年第一天

DateAdd(day,-(datepart(day,@Date1)-1),@Date1)  –取当月的第一天

dateadd(day,-1,DateAdd(day, -(datepart(day,dateadd(mm,1,@Date1))-1),dateadd(mm,1,@Date1)))  –取当月的最后一天

dateadd(yy,-1,DateAdd(day,-(datepart(day,@Date1)-1),@Date1)) –取去年当月第一天

dateadd(day,-1,DateAdd(day, -(datepart(day,dateadd(yy,-1,dateadd(mm,1,@Date1)))-1),dateadd(yy,-1,dateadd(mm,1,@Date1))))–取去年当月的最后一天

datename()函数同等于datepart

 3.数学函数  

abs()返回当前数字的绝对值  例如 select abs(-2)=2

avg() 返回某列的平均值  

ceiling   返回大于或等于知道值的最小整数 /**ceiling,n.天花板, 最**/2

例如  select ceiling(9.1)=10  select ceiling(-9.1)

count(all|distinct|expression) 计算行数

 4.字符串函数

Itrim()

 rtrim()返回删去尾随空白的指定表达式

select left(‘15425′,2)=’15’

select right(‘123456′,2)=’56’

substring(‘string’,n,m)

返回字符串从第n个起长度为m的字符串

例如substring(‘iloveyou’,2,4) 返回’love’

char_length(‘?????’) 返回字符串的长度值, 例如 char_length(‘我爱你’) 返回6. 中文字符一个占2个字节

char() 返回整数等值字符.

count()

REPLICATE  

 以指定的次数重复字符表达式。    

 语法    REPLICATE   (   character_expression   ,   integer_expression   ) ,表达式2 只能是数字或者能转化为数字的字符串  

例:select Replicate(‘0′,’3’) 返回 000  , select Replicate(‘0′,’-3′)  返回null,

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。