2010-10-20 3 views
-1

Я смущен с чтением в "Why is 1899-12-30 the zero date in Access/SQL Server instead of 12/31?"Изменен ли тип даты в SQL Server 2008?

Был ли тип даты в SQL Server до версии 2008 года? Я не могу найти.
В SQL Server 2008 нулевая дата - 0001-01-01. Были ли какие-либо типы дат раньше (в предыдущих версиях SQL Server), как это обратно совместимо?

ответ

3

No. До SQL Server 2008 были только типы datetime и smalldatetime.

Тип данных ............... Диапазон ........................... ....................................... Точность
дата и время ...... ............ 1 января 1753 года, до 31 декабря 9999 года ..... 3,33 миллисекунды

smalldatetime .......... 1 января 1900 года, через 6 июня 2079 ............... 1 минута

Пожалуйста, см: Date and Time Data in SQL Server 2008, в частности, бит, который говорит, что "Дата/время Типы данных Введенный в SQL Server 2008"

+0

Я спросил о типе даты, но не о других типах –

+2

@ vgv8: И я просто сказал вам, что не было никого! Грубость не поможет вам. –

+0

Быть точным или конкретным не является синонимом грубости. Вы ответили на то, о чем я никогда не спрашивал. Я вижу это наоборот. Где какой-либо тип даты в вашем ответе? –

1

В типе данных datetime SQL Server минимальная дата, которая может быть сохранена, равна 1 Jan 1753.

Однако DateTimes сохраняются как числовые смещения к базовой дате 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*/ 
Смежные вопросы