日期概念理解中的一些测试
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
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
相关文章推荐
- 2.1 日期概念理解中的一些测试.sql
- sql 日期概念理解中的一些测试
- 接口测试的初步理解并附一些用例
- 关于负载均衡一些概念的正确理解
- 性能测试概念再理解——集合点
- Docker的一些概念的理解
- 数据库中一些基本概念的深入理解
- 关于对于spring当中一些基础概念的理解
- 要理解LINUX内存管理子系统,先要熟悉一些概念
- Kettle学习之路(2)理解一些基本概念
- 理解嵌入式开发中的一些硬件相关的概念
- 网络编程中需要理解的一些概念
- 对白盒测试的一些理解
- 关于字符驱动设备的一些概念理解
- 我所理解的IO基础:IO、NIO、AIO的一些基本概念
- 待整理的linux一些概念理解
- 理解错误的一些概念总结。
- 理解嵌入式开发中的一些硬件相关的概念
- 软件测试面试必备的一些基础理论概念
- 理解嵌入式开发中的一些硬件相关的概念