技术开发 频道

简单实用SQL脚本Part:日期和时间函数

       参数说明:
 

不带世纪数位 (yy) (1)
 
带世纪数位 (yyyy)标准输入/输出 (3)
-0 或 100 (1,2)默 认mon dd yyyy hh:miAM(或 PM)
1101美 国mm/dd/yyyy
2102ANSIyy.mm.dd
3103英 国/法国dd/mm/yyyy
4104德 国dd.mm.yy
5105意 大利dd-mm-yy
6106(1)-dd mon yy
7107(1)-mon dd, yy
8108-hh:mi:ss
-9 或 109 (1,2)默 认设置 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)
 
10110美 国mm-dd-yy
11111日 本yy/mm/dd
12112ISOyymmdd

yyyymmdd
 

-13 或 113 (1,2)欧 洲默认设置 + 毫秒dd mon yyyy hh:mi:ss:mmm(24h)
14114-hh:mi:ss:mmm(24h)
-20 或 120 (2)ODBC 规范yyyy-mm-dd hh:mi:ss(24h)
-21 或 121 (2)ODBC 规范(带毫秒)yyyy-mm-dd hh:mi:ss.mmm(24h)
-126 (4)ISO8601yyyy- mm-ddThh:mi:ss.mmm(无空格)
-127(6, 7)带时区 Z 的 ISO8601。yyyy-mm-ddThh:mi:ss.mmmZ

(无 空格)
 

-130 (1,2)回历 (5)dd mon yyyy hh:mi:ss:mmmAM
-131 (2)回历 (5)dd/mm/yy hh:mi:ss:mmmAM
--CONVERT 与 DATEPART
--获取时分秒
SELECT CONVERT(VARCHAR(20),GETDATE(),108) AS '时分秒'
--11:24:59

--获得小时数
SELECT CONVERT(VARCHAR(2),GETDATE(),108) AS '时'
--11

--其实在获取小时数还有更好的办法
SELECT DATEPART(hh,GETDATE()) as 'Hour'
--11

  三、获取前一天或者前一个月日期字符串

--方法一
--年月日
select convert(varchar(8),getdate()-1,112)
--年月
--?没有办法
--
SELECT day(getdate()-1)


--方法二
--年月日
select convert(varchar(8),dateadd(day,-1,'2010-06-01 14:41:04.893'),112)
--年月
select convert(varchar(6),dateadd(month,-1,'2010-01-01 14:41:04.893'),112)
--
select day(dateadd(dd,-1,'2010-06-01 14:41:04.893'))

 

  四、获得当月天数

--获得当月天数
select day(dateadd(mm,1,getdate())-day(getdate()))

--分析如下:
select getdate() --当前日期
select day(getdate()) --目前第几天
select getdate()-day(getdate()) --上个月最后一天
select dateadd(mm,1,getdate())-day(getdate()) --加上一个月
select day(dateadd(mm,1,getdate())-day(getdate())) --获得当月天数

 

  五、计算SQL的执行时间

--获取select * from TableName语句的执行时间
declare @timediff datetime
select @timediff=getdate()
select * from TableName
print
'1耗时:'+ convert(varchar(10),datediff(ms,@timediff,getdate()))

0
相关文章