Sybase-各种日期时间格式

标准的日期时间格式,如 2008-11-7 9:23:33.000
select convert(datetime,convert(char(8),getdate(),112)||' '||convert(char(8),getdate(),108))
标准的日期格式(字符串),如 2008-11-7
select convert(char(4),datepart(year,getdate()))||'-'||convert(varchar(2),datepart(mm,getdate()))||'-'||convert(varchar(2),datepart(dd,getdate()))
标准的时间格式(字符串),如 9:23:33.000
select convert(char(8),getdate(),108)

标准的日期格式(字符串),如 2009-12-9 15:12:27
select convert(char(4),datepart(year,getdate()))||'-'||convert(varchar(2),datepart(mm,getdate()))||'-'||convert(varchar(2),datepart(dd,getdate()))||' '
|| convert(char(8),getdate(),108)

转换格式:
0或100 month dd yyyy hh:miampm
1 mm/dd/yy
2 yy.mm.dd
3 dd/mm/yy
4 dd.mm.yy
5 dd-mm-yy
6 dd month yy
7 month dd,yy
8 hh:mi:ss
9或109 month dd yyyy hh:mi:ss:mmmampm
10 mm-dd-yy
11 yy/mm/dd
12 yymmdd
101 mm/dd/yyyy
102 yyyy.mm.dd
103 dd/mm/yyyy
104 dd.mm.yyyy
105 dd-mm-yyyy
106 dd month yyyy
107 month dd,yyyy
108 hh:mi:ss
110 mm-dd-yyyy
111 yyyy/mm/dd
112 yyyymmdd

连续的日期时间格式(数字),如 20081107101406
select datepart(year,getdate())*10000000000+
datepart(mm,getdate())*100000000+
datepart(dd,getdate())*1000000+
datepart(hh,getdate())*10000+
datepart(mi,getdate())*100+
datepart(ss,getdate())
连续的日期格式(字符串),如 20081107
select convert(datetime,convert(char(8),getdate(),112))


当月的第一天(标准日期),如 2008-11-1
select convert(date,convert(char(4),datepart(year,getdate()))||'-'||convert(varchar(2),datepart(month,getdate()))||'-1')
当月的最后一天(标准日期),如 2008-11-30
select dateadd(day,-1,convert(date,convert(char(4),datepart(year,dateadd(mm,1,getdate())))||'-'||convert(varchar(2),datepart(month,dateadd(mm,1,getdate())))||'-1'))

-----------------------------------------------------------
上月第一天:
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)))
其实就是先取本月第一天,然后分别减一个月和一天就是上月第一天和最后一天


如 2009/06/11 15:00:00
SELECT CONVERT(VARCHAR, DATEADD(DAY, 0, GETDATE()), 111) + ' '
+ SUBSTRING(CONVERT(VARCHAR, DATEADD(HOUR, -1, GETDATE()), 108), 1, 2) + ':00:00'

如 2009-6-4 17:00:00
select convert(char(4),datepart(year,getdate()))||'-'||convert(varchar(2),datepart(mm,getdate()))||'-'||convert(varchar(2),datepart(dd,getdate()))||' '
+ SUBSTRING(CONVERT(VARCHAR, DATEADD(HOUR, -1, GETDATE()), 108), 1, 2) + ':00:00'

如 2009-6-4 16:00:00.000
select convert(datetime,convert(varchar(20),dateadd(hour,-2,getdate()),111)
+' '+convert(char(2),datepart(hour,dateadd(hour,-2,getdate())))+':00:00')

select convert(varchar(10),getdate(),108) --16:52:04
select conv

ert(varchar(10),getdate(),111) --2009/06/11
select convert(varchar(10),getdate(),112) --20090611
select convert(datetime,convert(char(8),getdate(),112)); --2009-6-17 0:00:00.000
select convert(datetime,convert(char(20),getdate(),111)); --2009-6-17 0:00:00.000
select convert(datetime,convert(varchar(20),getdate(),111)); --2009-6-17 0:00:00.000
select convert(datetime,convert(char(8),dateadd(day,-1,getdate()),112)+' '+'23:59:59'); --2009-6-16 23:59:59.000
select convert(datetime,convert(char(4),getdate(),112)) --2009-1-1 0:00:00.000

select convert(datetime,convert(varchar(20),dateadd(hour,-1,getdate()),111)+' '+convert(char(2),datepart(hour,dateadd(hour,-1,getdate())))+':00:00');
select convert(datetime,convert(varchar(20),dateadd(hour,-1,getdate()),111)+' '+convert(char(2),datepart(hour,dateadd(hour,-1,getdate())))+':59:59')

select @V_START_TIME=convert(datetime,convert(varchar(20),getdate(),111)+' '+convert(char(2),datepart(hour,getdate()))+':00:00')
select @V_END_TIME=dateadd(hour,1,@V_START_TIME)

select top 1 convert(char(10), dateadd(ss,-1,dateadd(hour,1,START_TIME)),108) from dbo.PM_WAP_CDR_KPI


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')



===================================================================================================
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 dat

epart(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


set @p_BackupDayDate=datename( yy,getdate())+datename( mm,getdate())+'1'

相关文档
最新文档