sql по дате определить день недели
Функция DATEPART стр. 1
Эта функция возвращает целое число, представляющее собой указанную аргументом datepart часть заданной вторым аргументом даты (date).
Список допустимых значений аргумента datepart, описанный выше в данном разделе, дополняется еще одним значением
|
Однако вернемся к примеру 7.1.3. В предположении, что время вылета/прилета является кратным минуте, мы можем его определить как сумму часов и минут. Поскольку функции даты/времени работают с целочисленными значениями, приведем результат к наименьшему интервалу — минутам. Итак, время вылета рейса 1123 в минутах:
Теперь мы должны сравнить, превышает ли время прилета время вылета. Если это так, следует вычесть из первого второе, чтобы получить продолжительность рейса. В противном случае к разности нужно добавить одни сутки (24*60 = 1440 минут).
Определить дату и время вылета рейса 1123.
В таблице совершенных рейсов Pass_in_trip содержится только дата рейса, но не время, так как в соответствии с предметной областью каждый рейс может выполняться только один раз в день. Для решения этой задачи нужно к дате, хранящейся в таблице Pass_in_trip, добавить время из таблицы Trip
Выполнив запрос, получим следующий результат
|
DISTINCT необходим здесь, чтобы исключить возможные дубликаты, поскольку номер и дата рейса дублируются в этой таблице для каждого пассажира данного рейса.
В ряде случаев функцию DATEPART можно заменить более простыми функциями. Вот они:
DAY (date) — целочисленное представление дня указанной даты. Эта функция эквивалентна функции DATEPART(dd, date).
MONTH (date) — целочисленное представление месяца указанной даты. Эта функция эквивалентна функции DATEPART(mm, date).
YEAR (date) — целочисленное представление года указанной даты. Эта функция эквивалентна функции DATEPART(yy, date).
DATEPART (Transact-SQL)
Эта функция возвращает целое число, представляющее указанную часть datepart заданного типа date.
Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).

Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
datepart
Определенная часть аргумента date, для которого функция DATEPART вернет значение типа integer. В приведенной ниже таблице перечислены все допустимые аргументы datepart.
DATEPART не принимает эквивалентные переменные, определяемые пользователем, для аргументов datepart.
| datepart | Сокращения |
|---|---|
| year | yy, yyyy |
| quarter | qq, q |
| month | mm, m |
| dayofyear | dy, y |
| day | dd, d |
| week | wk, ww |
| weekday | dw |
| hour | hh |
| minute | mi, n |
| second | ss, s |
| millisecond | ms |
| microsecond | mcs |
| nanosecond | ns |
| tzoffset | tz |
| iso_week | isowk, isoww |
date
Выражение, которое разрешается в один из следующих типов данных:
Для date DATEPART будет принимать столбец выражения, выражение, строковый литерал или определяемую пользователем переменную. Во избежание неоднозначности используйте четырехзначную запись года. Сведения о двузначном обозначении года см. в статье Настройка параметра конфигурации сервера two digit year cutoff.
Тип возвращаемых данных
Возвращаемое значение
Каждое выражение datepart и его краткие формы возвращают одно и то же значение.
Возвращаемое значение зависит от языка среды, задаваемого инструкцией SET LANGUAGE, и от параметра конфигурации сервера «язык по умолчанию» для имени входа. Если значение date является строковым литералом некоторого формата, то возвращаемое значение зависит от функции SET DATEFORMAT. Инструкция SET DATEFORMAT не изменяет возвращаемое значение, если дата представляется выражением столбца типа данных даты или времени.
.123456700
| datepart | Возвращаемое значение |
|---|---|
| year, yyyy, yy | 2007 г. |
| quarter, qq, q | 4 |
| month, mm, m | 10 |
| dayofyear, dy, y | 303 |
| day, dd, d | 30 |
| week, wk, ww | 44 |
| weekday, dw | 3 |
| hour, hh | 12 |
| minute, n | 15 |
| second, ss, s | 32 |
| millisecond, ms | 123 |
| microsecond, mcs | 123456 |
| nanosecond, ns | 123456700 |
| tzoffset, tz | 310 |
| iso_week, isowk, isoww | 44 |
Аргументы функции datepart, содержащие информацию о номере недели и дня
Для week (wk, ww) или weekday (dw) datepart возвращаемое значение DATEPART зависит от значения, заданного функцией SET DATEFIRST.
1 января любого года определяет начальное число для компонента даты week datepart. Пример:
DATEPART (wk, ‘Jan 1, xxx x’) = 1,
где xxxx — любой год.
В этой таблице представлены возвращаемые значения параметров week и weekday datepart для даты 21.04.2007 с каждым аргументом функции SET DATEFIRST. 1 января 2007 г. приходится на понедельник. 21 апреля 2007 г. приходится на субботу. Для региональных настроек «Английский (США)»
SET DATEFIRST 7 (воскресенье). После задания DATEFIRST используйте предлагаемую инструкцию SQL для табличных значений datepart:
SELECT DATEPART(week, ‘2007-04-21 ‘), DATEPART(weekday, ‘2007-04-21 ‘)
возвращаемое
Аргументы функции datepart, отображающие год, месяц и день даты
Значения, возвращаемые в результате выполнения инструкций DATEPART (year, date), DATEPART (month, date) и DATEPART (day, date), совпадают с результатами выполнения функций YEAR, MONTH и DAY, соответственно.
iso_week datepart
Стандарт ISO 8601 включает в себя систему отсчета дней и недель ISO. Каждая неделя приписывается тому году, в котором находится ее четверг. Например, первая неделя 2004 г. (2004W01) считается с понедельника 29 декабря 2003 г. по воскресенье 4 января 2004 г. Этот стиль нумерации обычно используется в странах и регионах Европы. В других странах он применяется редко.
Примечание. Наибольшее число недель в году может составлять 52 или 53.
Система отсчета недель в разных странах и регионах может не совпадать со стандартом ISO. В таблице ниже представлено шесть возможных вариантов.
По текущей дате и дню недели определить день недели с такой же датой заданного года