微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer教程—第二章日期处理一

一、日期概念的测试

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐