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,


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章