SQL Server 2008中的日期类型是否已更改?

时间:2010-10-20 02:41:32

标签: sql-server sql-server-2005 sql-server-2008 datetime date

我很困惑阅读"Why is 1899-12-30 the zero date in Access / SQL Server instead of 12/31?"

中的陈述

2008版之前的SQL Server中是否有日期类型?我找不到。
在SQL Server 2008中,零日期是0001-01-01。是否有任何日期类型(在以前的SQL Server版本中)如何向后兼容?

2 个答案:

答案 0 :(得分:3)

没有。在SQL Server 2008之前,只有datetimesmalldatetime类型。

数据类型...............范围.......................... ........................................精度
datetime .................. 1753年1月1日,到9999年12月31日..... 3.33毫秒

smalldatetime .......... 1900年1月1日,到2079年6月6日............... 1分钟

请参阅:Date and Time Data in SQL Server 2008,特别是“ SQL Server 2008中引入的日期/时间数据类型

答案 1 :(得分:1)

在SQL Server datetime数据类型中,可存储的最小日期为1 Jan 1753

但是,日期时间存储为基准日期1900-01-01 00:00:00.000

的数字偏移量
SELECT CAST(-0.25 AS DATETIME) /*1899-12-31 18:00:00.000*/
SELECT CAST(0 AS DATETIME) /*1900-01-01 00:00:00.000*/
SELECT CAST(0.25 AS DATETIME) /*1900-01-01 06:00:00.000*/

1899-12-30在SQL Server中没有任何意义。

SELECT CAST(CAST('1899-12-30' AS DATETIME) AS FLOAT) /*Returns -2*/