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的时间差,即日期2-日期1。
实例:
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()
两种方法都能实现该功能,但第一种的方法比第二种方法查询速度要慢的多。
11.日期分量与缩写
日期分量 缩写 值
year yy 1753-9999(对于smalldatetime为2079)
quarter qq 1-4
month mm 1-12
week wk 1-54
day dd 1-31
dayofyear dy 1-366
weekday dw 1-7(周日到周六)
hour hh 0-23
Minute mi 0-59
second ss 0-59
millisecond ms 0-999
注:①如果只输入2位数的年份,<50为20xx,>=50为19xx。
②毫秒前可用带一个冒号或者句号。如果带冒号,数字表示毫秒值,如果带句号,数字表示浮点数的秒值(一个数表示0.x秒,2个数表示0.xx秒,3个数表示0.xxx秒)。
12.convert() 函数
convert (datatype [(length) | (precision[, scale])] [null | not null], expression [, style])
参数名 说明
datatype 目标数据类型。不能使用用户自定义数据类型。
length 可选参数,可用于 char、nchar、varchar、nvarchar、binary、varbinary数据类型。如果不提高此参数,对于字符和二进制数据,截断为 30个字符。字符和二进制数据可以具有的最大长度是255个字节。
precision 是number或者decimal数据类型中有效位的个数。对浮点数据类型,是指尾数中二进制位的个数。如果不提供精度,对number或者decimal使用缺省值18。
scale 是number或者decimal数据类型中小数点右侧的位数。缺省为0。
null | not null 指定结果的可为空性。如不指定,结果与表达式具有相同的可为空性。
expression 从一种数据类型或数据格式转换为另一种数据类型或格式的值。
style 用于已转换数据的显示格式。如果将 datatime 和 smalldatetime 数据转换为字符类型,使用下表种的样式编号来指定显示格式。
Style参数说明如下表:
注:缺省值(0或100)和9(109)总是返回世纪值(yyyy)。 实例: select convert(char(12), getdate(), 3)
输出:将当前日期转换为样式“3” dd/mm/yy
本文转自: http://hi.baidu.com/lei_luo/blog/item/023545c369111e5fb319a84b.html