SQL Server日期函数集合_SQL Server_开发学院
–参考http://msdn.microsoft.com/zh-cn/library/ms186724.aspx
–1:获取系统日期和时间值函数
–getdate()
SELECT GETDATE() AS ‘today’
–getutcdate()
SELECT GETUTCDATE() AS ‘today’–2:修改日期和时间值函数
–dat
–参考http://msdn.microsoft.com/zh-cn/library/ms186724.aspx
–1:获取系统日期和时间值函数
–getdate()
SELECT GETDATE() AS ‘today’
–getutcdate()
SELECT GETUTCDATE() AS ‘today’–2:修改日期和时间值函数
–dateadd()
SELECT DATEADD(yy,10,GETDATE())
–获取当前天的前后五天日期:
select DATEADD(dd,5,GETDATE())
select DATEADD(dd,-5,GETDATE())
–2008? switchoffset
–SELECT SWITCHOFFSET (‘1998-09-20 7:45:50.71345 -5:00’, ‘-08:00’)
–2008? todatetimeoffset–3:获取日期和时间差函数
–datediff()
SELECT DATEDIFF(yy,’1984/5/3′,GETDATE())
–正常使用
SELECT DATEDIFF(HOUR,’1984/5/3′,GETDATE())
–转换成正数(负负得正)
SELECT DATEDIFF(MONTH,GETDATE(),’1984/5/3′)*-1–4:获取日期和时间部分的函数
–①datepart()返回表示指定date的指定datepart的整数:int
SELECT DATEPART(yy,GETDATE()),DATEPART(yyyy,GETDATE()) as ‘year’
SELECT DATEPART(mm,GETDATE()),DATEPART(m,GETDATE()) as ‘month’
SELECT DATEPART(dd,GETDATE()),DATEPART(d,GETDATE()) as ‘day’
SELECT DATEPART(hh,GETDATE()) as ‘Hour’
SELECT DATEPART(mi,GETDATE()),DATEPART(n,GETDATE()) as ‘minute’
SELECT DATEPART(ss,GETDATE()),DATEPART(s,GETDATE()) as ‘second’
SELECT DATEPART(ms,GETDATE()) as ‘millisecond’
–others
SELECT DATEPART(DW,GETDATE()),DATEPART(dw,GETDATE()),DATEPART(w,GETDATE()) as ‘weekday’–一周中的第几天
SELECT DATEPART(weekday, getdate() + @@DateFirst – 1)–中国星期算法中一周中的星期几
SELECT DATEPART(weekday, getdate() – 1)–中国星期算法中一周中的星期几
SELECT DATEPART(ww,GETDATE()),DATEPART(wk,GETDATE()) as ‘week’–?
SELECT DATEPART(dy,GETDATE()),DATEPART(y,GETDATE()) as ‘dayofyear’–一年中的第几天
SELECT DATEPART(qq,GETDATE()),DATEPART(q,GETDATE()) as ‘quarter’–季度
SELECT DATEPART(qq,’2010-03-21′),DATEPART(q,’2010-04-01′) as ‘quarter’
–年(yy),季(q),月(m),周(ww),时期(w),天(d),时(hh),分(n),秒(s)–②datename()返回表示指定日期的指定datepart的字符串:nvarchar
SELECT DATENAME(weekday,GETDATE())–星期三
SELECT DATENAME(WW, GETDATE())–?–③year(),相当于 datepart(yy,时间)
SELECT YEAR(GETDATE())–④month(),相当于datepart(mm,时间)
SELECT MONTH(GETDATE())–⑤day(),相当于datepart(dd,时间)
SELECT DAY(GETDATE())
SELECT DAY(‘1984/5/3’)–5:验证日期和时间值的函数
SELECT ISDATE(’04/15/2008′); –Returns 1.
SELECT ISDATE(’15/04/2008′); –Returns 0.–2008?
–SELECT CONVERT (date, GETDATE());
–SELECT CONVERT (time, GETDATE());
参数说明:日期部分
缩写
year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
weekday
dw
Hour
hh
minute
mi, n
second
ss, s
millisecond
ms
Date 和 Time 样式
–语句及查询结果:
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006对上面进行动态生成字符串:
declare @sql1 nvarchar(200),@sql2 nvarchar(200)
declare @count nvarchar(100);
set @sql1 = ‘SELECT CONVERT(varchar(100), GETDATE(), 0)’
set @sql2 = ‘SELECT @count = CONVERT(varchar(100), GETDATE(), 0)’
exec sp_executesql @sql2,N’@count nvarchar(50) out’,@count out
print @sql1 +’:’+ @count–SQL Server 仅保证往返转换(即从原始数据类型进行转换后又返回原始数 据类型的转换)在各版本间产生相同值。
DECLARE @myval decimal (5, 2)
SET @myval = 193.57
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5))
— Or, using CONVERT
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval))
–输出193.57000
–输 出193.57000–bigint数据类型的字段截取(其它类型也一样)
select substring(CONVERT(varchar(15),字段名),11,9) from 表名
select substring(cast(字段名 as varchar(50),6,9)) from 表名不带世纪数位 (yy) (1) 带世纪数位 (yyyy) 标准 输入/输出 (3)
–
0 或 100 (1,2)
默 认
mon dd yyyy hh:miAM(或 PM)
1101
美 国
mm/dd/yyyy
2102
ANSI
yy.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
12112
ISO
yymmdd
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)
ISO8601
yyyy- 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