Sybase日期函數(shù)
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到八宿網(wǎng)站設(shè)計(jì)與八宿網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋八宿地區(qū)。
日期函數(shù)
getdate()
得到當(dāng)前時(shí)間,可以設(shè)置得到各種時(shí)間格式.
datepart(日期部分,日期)
取指定時(shí)間的某一個(gè)部分,年月天時(shí)分秒.
datediff(日期部分,日期1,日期2)
計(jì)算指定的日期1和日期2的時(shí)間差多少.
dateadd(日期部分,數(shù)值表達(dá)式,日期)
計(jì)算指定時(shí)間,再加上表達(dá)式指定的時(shí)間長(zhǎng)度.
--取時(shí)間的某一個(gè)部分
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
--取星期幾
//該計(jì)算出的結(jié)果要+1,因其計(jì)算出的星期天為一周的第1天,星期六自然就成為一周第7天
set datefirst 1
select datepart(weekday,getdate()) --weekday
--字符串時(shí)間
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'
--整數(shù)時(shí)間
select convert(int,convert(char(10),getdate(),112)) -- 20031112
select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646
--時(shí)間格式 "YYYY.MM.DD HH:MI:SS" 轉(zhuǎn)換為 "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
--當(dāng)月最后一天
declare
@tmpstr varchar(10)
@mm int,
@premm int,
@curmmlastday varchar(10)
begin
select @mm=datepart(month,getdate())--當(dāng)月
select @premm=datepart(month,dateadd(month,-1,getdate())) --上個(gè)月
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) --當(dāng)月最后一天
end
----------------------------------------------------------
格式為:DateAdd(interval, number, date)
interval:間隔時(shí)間(如時(shí)、分、秒、天、周、月、季、年)
number:間隔數(shù)(正數(shù)為向后+N,負(fù)數(shù)為向前-N)
date:當(dāng)前日期或指定日期
查詢當(dāng)前日期起,以時(shí)、分、秒、天、周、月、季、年為間隔的日期
時(shí):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)))
其實(shí)就是先取本月第一天,然后分別減一個(gè)月和一天就是上月第一天和最后一天
--取本周第一天,以星期一作為本周第一天
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)
得到當(dāng)前日期的本周最后一天
SELECT @Date1 = DateAdd(day,7-(Case datepart(dw,@Date1)-1 when 0 then 7 else datepart(dw,@Date1)-1 end),@Date1)
根據(jù)小時(shí)判斷日結(jié)日期,HH>21時(shí),返回當(dāng)天日期,<21時(shí),返回前一天日期
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的數(shù)據(jù)類型必須兼容
isnull(value1,value2)
case when value1=null then value2 else value1 end
例:select isnull(null,0)=0
select isnull(2,0)=2
2.關(guān)于日期的函數(shù)
dateadd(dd,n,dDate)
解釋:返回dDate后n的日期 (n可以為負(fù)數(shù))
例: select dateadd(dd,2,'2006-12-10')--10號(hào)的后2天
返回值:Dec 12 2006 12:00AM
select dateadd(dd,-1,'2006-12-15')=Dec 14 2006 12:00AM
datediff(day,date1,date2),
解釋:date2與date1相差的天數(shù),若date2在前,則返回值為負(fù)數(shù)
例子 select datediff(day,'2006-12-10','2006-11-30')=-10
getdate() 返回服務(wù)器的當(dāng)時(shí)時(shí)間
datename(datepart,date) 返回時(shí)間的名稱 例如 select datename(dy,'2006-2-01')=32/**dy,dayofyear,1-366**/
round(number,n),四舍五入 例如 select round(123.155,2)=123.56
datepart(day,date) 返回當(dāng)月第一日的差距天數(shù)
例如 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) --取當(dāng)月的第一天
dateadd(day,-1,DateAdd(day, -(datepart(day,dateadd(mm,1,@Date1))-1),dateadd(mm,1,@Date1))) --取當(dāng)月的最后一天
dateadd(yy,-1,DateAdd(day,-(datepart(day,@Date1)-1),@Date1)) --取去年當(dāng)月第一天
dateadd(day,-1,DateAdd(day, -(datepart(day,dateadd(yy,-1,dateadd(mm,1,@Date1)))-1),dateadd(yy,-1,dateadd(mm,1,@Date1))))--取去年當(dāng)月的最后一天
datename()函數(shù)同等于datepart
3.數(shù)學(xué)函數(shù)
abs()返回當(dāng)前數(shù)字的絕對(duì)值 例如 select abs(-2)=2
avg() 返回某列的平均值
ceiling 返回大于或等于知道值的最小整數(shù) /**ceiling,n.天花板, 最**/2
例如 select ceiling(9.1)=10 select ceiling(-9.1)
count(all|distinct|expression) 計(jì)算行數(shù)
4.字符串函數(shù)
Itrim()
rtrim()返回刪去尾隨空白的指定表達(dá)式
select left('15425',2)='15'
select right('123456',2)='56'
substring('string',n,m)
返回字符串從第n個(gè)起長(zhǎng)度為m的字符串
例如substring('iloveyou',2,4) 返回'love'
char_length('?????') 返回字符串的長(zhǎng)度值, 例如 char_length('我愛(ài)你') 返回6. 中文字符一個(gè)占2個(gè)字節(jié)
char() 返回整數(shù)等值字符.
count()
REPLICATE
以指定的次數(shù)重復(fù)字符表達(dá)式。
語(yǔ)法 REPLICATE ( character_expression , integer_expression ) ,表達(dá)式2 只能是數(shù)字或者能轉(zhuǎn)化為數(shù)字的字符串
例:select Replicate('0','3') 返回 000 , select Replicate('0','-3') 返回null,