2012-07-02 3 views
0

Я знаю, что это может встретить как новичок вопрос, но мне интересно, почему даты в SQL должны выглядеть следующим образом:Почему SQL Server должен иметь такие точные форматы даты?

FieldBeginDate 
2010-04-01 00:00:00.000 

FieldEndDate 
2010-12-31 23:59:00.000 

Почему три десятичных или точность? И есть ли способ иметь даты, показанные только в Месяц-Год-Год? благодаря!

+1

Я знаю, что вы уже приняли ответ, но вы знаете, вы можете преобразовать дату, используя команду Преобразовать в формат, который вы выбираете. Если вы используете преобразование с помощью nvarchar (10), он автоматически знает, как преобразовать его в нечто, подходящее для ограничения этого размера. – RetroCoder

ответ

2

SQL Server 2008 имеет тип DATE, который отклоняет время.

Использование DATE типа, а не DATETIME типа также принимает только один int для хранения значения ... в отличие от дваint с необходимыми для хранения DATETIME

EDIT: Вы также спросите, почему существует три десятичных знака ... Это связано с точностью, с которой хранится значение. по умолчанию (@AaronBetrand метко указывает в комментариях ниже, что вы можете получить расширенную точность). SQL Server хранит время в один-три-сотых в секунду приращений.

Вот SQLDenis по теме:
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-server

+3

А также 'DATETIME2 (7)', что позволяет использовать 7 знаков после запятой, а не просто 3. И не имеет ужасных проблем с округлением 3 мс. –

+0

Чтобы быть точным, DATE требует только 3 байта, а не 4 для int. –

+0

@AaronBertrand, но OP, похоже, просит * меньше точности. – Matthew

Смежные вопросы