一、日期概念的测试
1--测试 datetime 精度问题 DECLARE @t TABLE(date char(21)) INSERT @t SELECT '1900-1-1 00:00:00.000' INSERT @t SELECT '1900-1-1 00:00:00.001' INSERT @t SELECT '1900-1-1 00:00:00.009' INSERT @t SELECT '1900-1-1 00:00:00.002' INSERT @t SELECT '1900-1-1 00:00:00.003' INSERT @t SELECT '1900-1-1 00:00:00.004' INSERT @t SELECT '1900-1-1 00:00:00.005' INSERT @t SELECT '1900-1-1 00:00:00.006' INSERT @t SELECT '1900-1-1 00:00:00.007' INSERT @t SELECT '1900-1-1 00:00:00.008' SELECT date,转换后的日期=CAST(date as datetime) FROM @t
2--结果
date????????????????? 转换后的日期 --------------------- -------------------------- 1900-1-1 00:00:00.000 1900-01-01 00:00:00.000 1900-1-1 00:00:00.001 1900-01-01 00:00:00.000 1900-1-1 00:00:00.009 1900-01-01 00:00:00.010 1900-1-1 00:00:00.002 1900-01-01 00:00:00.003 1900-1-1 00:00:00.003 1900-01-01 00:00:00.003 1900-1-1 00:00:00.004 1900-01-01 00:00:00.003 1900-1-1 00:00:00.005 1900-01-01 00:00:00.007 1900-1-1 00:00:00.006 1900-01-01 00:00:00.007 1900-1-1 00:00:00.007 1900-01-01 00:00:00.007 1900-1-1 00:00:00.008 1900-01-01 00:00:00.007
(所影响的行数为 10 行) GO
3-- 对于 datetime 类型的纯日期和时间的十六进制表示 DECLARE @dt datetime
4--单纯的日期 SET @dt='1900-1-2' SELECT CAST(@dt as binary(8)) 5--结果: 0x0000000100000000
6--单纯的时间 SET @dt='00:00:01' SELECT CAST(@dt as binary(8)) 7--结果: 0x000000000000012C GO
8-- 对于 smalldatetime 类型的纯日期和时间的十六进制表示 DECLARE @dt smalldatetime
9--单纯的日期 SET @dt='1900-1-2' SELECT CAST(@dt as binary(4)) 10--结果: 0x00010000
11--单纯的时间 SET @dt='00:10' SELECT CAST(@dt as binary(4)) 12--结果: 0x0000000A
?二、日期转换
1--字符转换为日期时,Style的使用
2--Style=101时,表示日期字符串为:mm/dd/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',101) --结果:2003-11-01 00:00:00.000
3-- Style=103时,表示日期字符串为:dd/mm/yyyy格式 SELECT CONVERT(datetime,103) --结果:2003-01-11 00:00:00.000
4?日期转换为字符串 DECLARE @dt datetime SET @dt='2003-1-11'
5-- Style=101时,表示将日期转换为:mm/dd/yyyy 格式 SELECT CONVERT(varchar,@dt,101) --结果:01/11/2003
6-- Style=103时,表示将日期转换为:dd/mm/yyyy 格式 SELECT CONVERT(varchar,103) --结果:11/01/2003
?7这是很多人经常犯的错误,对非日期型转换使用日期的style样式 SELECT CONVERT(varchar,'2003-1-11',101) --结果:2003-1-11
三、日期格式化
1-短日期格式:yyyy-m-d SELECT REPLACE(CONVERT(varchar(10),120),N'-0','-')
2-长日期格式:yyyy年mm月dd日 --方法1 SELECT STUFF(STUFF(CONVERT(char(8),112),5,N'年'),8,N'月')+N'日' --方法2 SELECT DATENAME(Year,@dt)+N'年'+DATENAME(Month,@dt)+N'月'+DATENAME(Day,@dt)+N'日'
3-长日期格式:yyyy年m月d日 SELECT DATENAME(Year,@dt)+N'年'+CAST(DATEPART(Month,@dt) AS varchar)+N'月'+DATENAME(Day,@dt)+N'日'
4-完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm SELECT CONVERT(char(11),120)+CONVERT(char(12),114)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|