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

 

兩種方法都能實現該功能,但第一種的方法比第二種方法查詢速度要慢的多。
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()