1:dateadd函数 在向指定日期加上一段时间的基础上,返回新的 datetime 值:

有个表D_data,其中有字段D_time,内容格式“1/18/2010 5:32:24 AM ”(国外的数据库)
它记录了数据添加的时间,所以日期后面的时间是经常变动的。现在我只想改变前面的日期,后面的时间不变。
例如,我想把id大于2000的数据日期改成5天前的

语句:

update D_data set D_time = dateadd(day,-5,D_time) where id > 2000

update D_data set D_time = dateadd(dd,-5,D_time) where id > 2000

update D_data set D_time =D_time -5 where id > 2000

 

 

2:DATEDIFF 函数:

   语法:DATEDIFF (datepart,startdate,enddate)

 

--查询当天:

select * from info where DateDiff(dd,datetime,getdate())=0

--查询24小时内的:

select * from info where DateDiff(hh,datetime,getDate())<=24

 

--本月记录   

Select * FROM 表 Where datediff(month,[dateadd],getdate())=0   

   

--本周记录   

Select * FROM 表 Where datediff(week,[dateadd],getdate())=0 

(说明:info为表名,datetime为数据库中的字段值)

 

 

3:SQL Server CONVERT() 函数

定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。
data_to_be_converted 含有需要转换的值。
style 规定日期/时间的输出格式。

可以使用的 style 值:

Style ID

Style 格式

100 或者 0

mon dd yyyy hh:miAM (或者 PM)

101

mm/dd/yy

102

yy.mm.dd

103

dd/mm/yy

104

dd.mm.yy

105

dd-mm-yy

106

dd mon yy

107

Mon dd, yy

108

hh:mm:ss

109 或者 9

mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110

mm-dd-yy

111

yy/mm/dd

112

yymmdd

113 或者 13

dd mon yyyy hh:mm:ss:mmm(24h)

114

hh:mi:ss:mmm(24h)

120 或者 20

yyyy-mm-dd hh:mi:ss(24h)

121 或者 21

yyyy-mm-dd hh:mi:ss.mmm(24h)

126

yyyy-mm-ddThh:mm:ss.mmm(没有空格)

130

dd mon yyyy hh:mi:ss:mmmAM

131

dd/mm/yy hh:mi:ss:mmmAM

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110) 
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635