Разработка серверной части ИС в СУБД MS SQL Server. Особенности настройки свойств таблиц. Общие рекомендации по выбору типа данных, страница 3

Функции для работы с датой и временем

Функции даты и времени принимают в качестве входных значений дату и время и возвращают либо строковые, числовые значения, либо значения в формате даты и времени. При этом нужно учитывать, что в SQL Server время считается компонентом типа данных datetime. Многие функции даты и времени имеют параметр, обычно обозначающий единицы измерения времени, например, "год", "месяц", "минута".

GETDATE( ) – возвращает текущее системное время;

ISDATE(expression) – проверяет правильность выражения на соответствие одному из возможных форматов ввода даты. Если символьное выражение может быть правильно преобразовано в тип данных datetime, то возвращается 1, в противном случае – 0. Данная функция используется для предварительной проверки введенной пользователем строки на правильность формата.

DAY, MONTH, YEAR – соответственно возвращают число, месяц, год из указанной даты.

DATEADD(datepart, number, date) – добавляет к дате указанное значение дней, месяцев, часов и т. д. Первый аргумент определяет тип значения, которое необходимо добавить (аргумент принимает фиксированный набор значений); второй аргумент содержит количество единиц, которое нужно добавить к выбранному значению; третий аргумент содержит значение типа данных datetime.

DATEDIFF(datepart, startdate, enddate) – возвращает разницу между указанными частями двух дат. Например, можно подсчитать количество дней, прошедших между двумя датами. Форматы для обозначения частей дат соответствуют форматам для функции DATEADD.

В таблице представлены функции даты и времени Transact-SQL:

Рассмотрим примеры использования функций для работы с датой и временем.

(используются ограниченные идентификаторы, так как в качестве имен возвращаемых столбцов взяты зарезервированные слова).

Простейший способ получить только дату, «обрезав» время, - использовать несколько функций:

Примечание. В SQL Server нет типа данных только для даты, однако многим приложениям он нужен. Поэтому рекомендуют «обрезать» время и оставлять только дату с помощью триггера, срабатывающего при занесении соответствующих данных.

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

1.3. Пользовательские функции MS SQL Server 2005

Несмотря на то, что в SQL Server имеется много встроенных функций, пользователь может создавать свои собственные – пользовательские функции, содержащие часто используемый код. Рассмотрим создание пользовательских функций двух типов:

скалярные функции – возвращают скалярные значения;

табличные функции – возвращают результат в виде таблицы, в свою очередь, делятся на внедренные (функции Inline) и табличные функции с множеством инструкций (функции Multi-statement).

Tабличные функции подчиняются тем же правилам, что и скалярные функции, но возвращают результат в виде таблицы. Поэтому они в основном используются в предложении FROM инструкции SELECT, и их можно соединять с другими таблицами и представлениями. Данные функции используют табличные переменные – особый тип переменных, служащий для временного хранения набора строк, возвращаемых как результат работы табличной функции.

1.3.1. Cкалярные функции

Cкалярные функции принимают 0 или несколько входных параметров и возвращают одно скалярное значение. Для создания функции используется инструкция CREATEFUNCTION, имеющая следующий общий синтаксис:

CREATE FUNCTION [имя_схемы.] имя_функции

( [ { @имя_параметра  [ AS ]  [имя_схемы.] тип_данных_параметра

          [ = значение_параметра_по_умолчанию ] }

          [, …n]   ]  )

RETURNS тип_возвращаемых_данных

          [ WITH <function_option> [, …n] ]

[ AS ]

BEGIN

                              тело_функции

RETURN скалярное_выражение

END [ ; ]

<function_option>::=

{ [ENCRYPTION] | [SCHEMABINDING] | [EXECUTE_AS_Clause] }

Приведенные элементы синтаксиса имеют следующее назначение.