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)))
其实就是先取本月第一天,然后分别减一个月和一天就是上月第一天和最后一天
抱歉,暂停评论。