您的位置:首页 > 其它

日期概念理解中的一些测试

2008-04-02 09:21 323 查看
1 --A. 测试 datetime 精度问题

2 DECLARE @t TABLE(date char(21))

3 INSERT @t SELECT '1900-1-1 00:00:00.000'

4 INSERT @t SELECT '1900-1-1 00:00:00.001'

5 INSERT @t SELECT '1900-1-1 00:00:00.009'

6 INSERT @t SELECT '1900-1-1 00:00:00.002'

7 INSERT @t SELECT '1900-1-1 00:00:00.003'

8 INSERT @t SELECT '1900-1-1 00:00:00.004'

9 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

/*--结果

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

--B. 对于 datetime 类型的纯日期和时间的十六进制表示

DECLARE @dt datetime

--单纯的日期

SET @dt='1900-1-2'

SELECT CAST(@dt as binary(8))

--结果: 0x0000000100000000

--单纯的时间

SET @dt='00:00:01'

SELECT CAST(@dt as binary(8))

--结果: 0x000000000000012C

GO

--C. 对于 smalldatetime 类型的纯日期和时间的十六进制表示

DECLARE @dt smalldatetime

--单纯的日期

SET @dt='1900-1-2'

SELECT CAST(@dt as binary(4))

--结果: 0x00010000

--单纯的时间

SET @dt='00:10'

SELECT CAST(@dt as binary(4))

--结果: 0x0000000A
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: