Дата приведена к int - почему это неправильно? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть вопрос. Почему date CAST для int не работает, а varchar для int работает нормально? например,

Если мы объявим переменную и запустим этот запрос, он не будет работать,

declare @dateb datetime
set @dateb = getdate()

select cast(@dateb as int)

пока этот запрос будет работать нормально. Почему?

select cast(convert(varchar(8),@dateb,112) as int) 

дата должна быть 8 цифр.

1 Ответ

0 голосов
/ 06 сентября 2018

Ваша проблема связана с неправильным пониманием того, как SQL Server хранит информацию о дате.Она не хранится как читаемая дата, а скорее как целое число или серия целых чисел, которые механизм использует для вычисления рассматриваемой даты, а затем отображает удобным для человека способом.

* CONVERT Функция, которую вы использовали выше, создает текстовое представление даты в том виде, в котором вы ожидаете ее увидеть, а затем преобразует это представление в целое число (также, как вы ожидаете его увидеть).Прямое преобразование из типа данных даты показывает целое число, которое SQL Server фактически использует для хранения «сегодня», но это не то, что вы ожидаете.

Об этом есть действительно хорошая статья о РобертБлог Шелдона , если вы заинтересованы в углублении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...