Справка по SQL | страница 23



Пример (4 схема). Определить дату и время вылета рейса 1123.

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


>SELECT pt.trip_no, DATEADD(mi, DATEPART(hh,time_out)*60 + DATEPART(mi,time_out), date) [time]

>FROM pass_in_trip pt JOIN trip t ON pt.trip_no=t.trip_no WHERE t.trip_no=1123


Выполнив запрос, получим следующий результат

Trip_no

Time

1123

2003-04-05 16:20:00.000

1123

2003-04-08 16:20:00.000



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

Функция DATENAME


Синтаксис

DATENAME ( datepart , date )

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

Это дает нам простую возможность конкатенировать компоненты даты, получая любой нужный формат представления. Например, конструкция


>SELECT DATENAME ( weekday , '2003-12-31' )+', '+DATENAME ( day , '2003-12-31' )+' '+ DATENAME ( month , '2003-12-31' )+' '+DATENAME ( year , '2003-12-31' )


даст нам следующий результат

Wednesday, 31 December 2003

Следует отметить, что данная функция выявляет отличие значений day и dayofyear аргумента datepart. Первый дает символьное представление дня указанной даты, в то время как второй дает символьное представление этого дня от начала года. Т.е.


>SELECT DATENAME ( day , '2003-12-31' )


даст нам 31, а


>SELECT DATENAME ( dayofyear , '2003-12-31' )


- 365.

В ряде случаев функцию DATEPART можно заменить более простыми функциями. Вот они:

DAY ( date ) - целочисленное представление дня указанной даты. Эта функция эквивалентна функции DATEPART(dd, date).

MONTH ( date ) - целочисленное представление месяца указанной даты. Эта функция эквивалентна функции DATEPART(mm, date).

YEAR ( date ) - целочисленное представление года указанной даты. Эта функция эквивалентна функции DATEPART(yy, date).

Функции работы со строками в MS SQL SERVER 2000



Вот полный перечень функций работы со строками, взятый из BOL:

ASCII

NCHAR

SOUNDEX

CHAR

PATINDEX

SPACE

CHARINDEX

REPLACE

STR

DIFFERENCE

QUOTENAME

STUFF

LEFT

REPLICATE

SUBSTRING

LEN

REVERSE

UNICODE

LOWER

RIGHT

UPPER

LTRIM