今天做php項(xiàng)目的時(shí)候碰到一個(gè)問題,經(jīng)過上網(wǎng)查找,找到了解決方法,特意記下來,以備以后查找。問題是保存在sybase數(shù)據(jù)庫中的時(shí)間格式是類似"2007-06-18 14:12:30"這種格式的,但是當(dāng)用php從數(shù)據(jù)庫中取出時(shí),格式變了,不是我想要的那種格式。于是上網(wǎng)查了一下sybase的日期時(shí)間函數(shù),找到了sybase中常用的日期時(shí)間函數(shù)如下:
日期函數(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í)間長度.
--取時(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
--取星期幾
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
我自己組合了一下,利用(convert(char,PUBDATE,102)+‘ ‘+convert(char,PUBDATE,108)) AS PUBDATE先把數(shù)據(jù)庫中PUBDATE字段轉(zhuǎn)換成"2007.06.18 14:12:30"的格式,再利用php的str_replace函數(shù)把"."替換成"-",終于得到了我想要的類似"2007-06-18 14:12:30”的日期格式。