1,select getdate(); 返回當前日期和時間;可以設置得到各種時間格式.
實例:
select getdate()
---------------------------
03 12 2009 5:47PM
2, select datename(datepart,'20030101');以字串形式返回指定部分的值,轉換成合適的名稱;
實例:
select datename(dd,'20030101')
------------------------------
1
3,select datepart(datepart,'20030101');作為整數返回指定值的指定部分;即取指 定時間的某一個部
分,年月天時分秒.
實例:
select datepart(dd,'20030101')
-----------
1
4,select datediff(datepart,日期1,日期2);返回日期1和日期2的時間差。
實例:
select datediff(dd,'20030501','20030102')
-----------
-119
5,dateadd(datepart,數值運算式,日期);計算指定時間,再加上運算式指定的時間長度.
實例:
select dateadd(yy,1,'20030101')
---------------------------
01 1 2004 12:00AM
datepart 的參數值:
年 yy
季度 qq
月 mm
每年中的天 dy
天 dd或day
星期 wk
星期天 dw
小時 hh
分鐘 mi
秒 ss
毫秒 ms
6,取星期幾
set datefirst 1
select datepart(weekday,getdate()) --weekday
7,字串時間
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'
8,整數時間
select convert(int,convert(char(10),getdate(),112)) -- 20031112
select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646
9,時間格式 "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
10,當月最後一天
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
在實際應該中,我們應該將比較複雜的運算式轉化為較簡單的運算式,這樣所匯資料的速度就比較快比如說,
我要取某表每十天之內資料如下:
表1的結構:
Column_name Type Length
--------------- --------------- -----------
NAME char 20
SJ money 8
RQ datetime 8
方法一:
select * froM 表1
where datediff(day,RQ,convert(datetime,convert(char(20),getdate(),102)))<=10
方法二:
select * from 表1
where RQ>=dateadd(dd,-10,getdate())
AND RQ<=getdate()
兩種方法都能實現該功能,但第一種的方法比第二種方法查詢速度要慢的多。
全站熱搜
留言列表