我很困惑阅读"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版本中)如何向后兼容?
答案 0 :(得分:3)
没有。在SQL Server 2008之前,只有datetime和smalldatetime类型。
数据类型...............范围.......................... ........................................精度强>
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*/