DateTime2 против DateTime в SQL Server - PullRequest
       115

DateTime2 против DateTime в SQL Server

690 голосов
/ 26 августа 2009

Какой:

- это рекомендуемый способ хранения даты и времени в SQL Server 2008 +?

Я знаю о различиях в точности (и, возможно, о размере места для хранения), но игнорируя их на данный момент, есть ли документ о передовой практике, когда что использовать, или, может быть, нам следует просто использовать только datetime2?

Ответы [ 14 ]

6 голосов
/ 18 августа 2014

Согласно этой статье , если вы хотите иметь одинаковую точность DateTime при использовании DateTime2, вам просто нужно использовать DateTime2 (3). Это должно дать вам ту же точность, занимать на один байт меньше и обеспечить расширенный диапазон.

4 голосов
/ 04 ноября 2017

Я только что наткнулся на еще одно преимущество для DATETIME2: он позволяет избежать ошибки в модуле Python adodbapi, которая взрывается, если передается значение стандартной библиотеки datetime, которое имеет ненулевые микросекунды для DATETIME столбец, но работает нормально, если столбец определен как DATETIME2.

0 голосов
/ 25 мая 2017
Select ValidUntil + 1
from Documents

Приведенный выше SQL не будет работать с полем DateTime2. Возвращается сообщение об ошибке «Столкновение с типом операнда: datetime2 несовместимо с int»

Добавление 1 для получения следующего дня - это то, что разработчики делали с датами в течение многих лет. Теперь у Microsoft есть супер новое поле datetime2, которое не может обработать эту простую функциональность.

«Давайте использовать этот новый тип, который хуже старого», я так не думаю!

0 голосов
/ 20 ноября 2013

Я думаю, DATETIME2 - лучший способ хранить date, потому что он имеет большую эффективность, чем DATETIME. В SQL Server 2008 вы можете использовать DATETIME2, он хранит дату и время, занимает 6-8 bytes для сохранения и имеет точность 100 nanoseconds. Так что любой, кому нужна большая точность времени, захочет DATETIME2.

...