Продолжается подписка на наши издания! Вы не забыли подписаться?

Новые типы DATETIME в SQL Server 2008

Автор: Dinesh Asanka
Опубликовано: 22.04.2008

SQL Server 2008 появился – пусть пока и не окончательный, а в CTP-версии. Когда вы слышите о новом ПО, первый, и самый очевидный, вопрос: «А что в нем нового?» В SQL Server 2008 много нового. Эта статья рассказывает о новых типах данных в SQL Server 2008, в частности, о функциях DATETIME.

Главное изменение в функциях DATETIME в SQL Server 2008 – четыре новых типа данных DATETIME: DATE, TIME, DATETIMEOFFSET и DATETIME2. Кроме этих новых типов данных, появились и новые функции DATETIME.

Тип данных DATE

In SQL Server 2005 не было отдельного типа данных, хранящего только дату. Для этого приходилось использовать типы данных DATETIME или SMALLDATETIME. Кроме введенной даты вы видели время, которое представлялось как 12:00 AM, и требовалось форматировать вывод, чтобы отображать только дату. В большинстве случаев можно использовать функцию getdate() для хранения текущей даты. Если вы сохраняете значение getdate() в колонке SQL Server 2005 типов SMALLDATETIME или DATETIME, вы заодно сохраняете и текущее время, что может привести к проблемам. Например, если вы захотите найти записи по заданной дате и напишете запрос:

SELECT * FROM tblDate Where [Date] = '2007-10-01'

ничего не выйдет – из-за наличия времени в колонке Date. Поэтому придется использовать следующий запрос:

SELECT * FROM tblDate Where datediff(d,[Date],‘2007-10-01’) =0

Этот запрос будет работать, но есть большая вероятность, что индекс, созданный для колонки Date, использован не будет. Поэтому такой запрос пригоден только для работы с небольшим количеством записей.

Несмотря на наличие обходных путей, ясно, что ест потребность в типе данных DATE для экономии времени и во избежание возможных ошибок

DECLARE @dt as DATE
SET @dt = getdate()
PRINT @dt

Этот запрос выдает 2007-10-27. Как видите, компонента времени здесь нет. Тип данных DATE допускает значения от 0001-01-01 до 9999-12-31.

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

Тип данных TIME

Тип данных DATETIME2

Тип данных DATETIMEOFFSET

Функции DateTime

SWITCHOFFSET

TODATETIMEOFFSET

Convert

Проблемы с новым типом данных DATETIME

Предостережение

Я уверен, что в некий момент вы захотите скачать SQL Server 2008 с сайта Microsoft. Запомните, что нельзя устанавливать на одной машине SQL Server 2005 и 2008. После установки SQL Server 2008 вы не сможете использовать установленный на той же ОС SQL Server 2005. Поэтому устанавливать SQL Server 2008 нужно на сервере, где не планируется использовать SQL Server 2005, или на виртуальном сервере.


Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
........................
"С полным содержанием данной статьи можно ознакомиться в печатной версии журнала"

Copyright © 1994-2016 ООО "К-Пресс"