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