Функция Weekday — Служба поддержки Майкрософт
Access
Выражения
Функции даты и времени
Функции даты и времени
Функция Weekday
Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше
Возвращает значение Variant (Integer), содержащее целое число, соответствует дню недели.
Синтаксис
Weekday( дата [, первый_день_недели ] )
Функция Weekday имеет следующие аргументы:
Аргумент |
|
дата |
Обязательный аргумент. Variant, числовое выражение, строковое выражение или любое их сочетание, которое может представлять дату. Если date содержит значение NULL, возвращается значение NULL . |
|
Необязательный аргумент. Константа, задающая первый день недели. Если значение не указано, предполагается vbSunday . |
Параметры
Аргумент первый_день_недели может принимать следующие значения:
Константа |
|
Описание |
vbUseSystem |
0 |
Используются параметры API NLS. |
vbSunday |
1 |
Воскресенье (по умолчанию) |
vbMonday |
2 |
Понедельник |
|
3 |
Вторник |
vbWednesday |
4 |
Среда |
vbThursday |
|
Четверг |
vbFriday |
6 |
Пятница |
vbSaturday |
7 |
Суббота |
Возвращаемые значения
Функция Weekday возвращает одно из следующих значений:
Константа |
Значение |
Описание |
|
1 |
Воскресенье |
vbMonday |
2 |
Понедельник |
vbTuesday |
3 |
Вторник |
vbWednesday |
4 |
Среда |
vbThursday |
5 |
Четверг |
vbFriday |
6 |
Пятница |
vbSaturday |
7 |
Суббота |
Замечания
Если свойство Calendar имеет значение Gregorian, возвращаемое целое значение представляет собой день недели по григорианскому календарю. Если задан календарь Hijri, то будет возвращен день недели по календарю Хиджра. Для дат по календарю Хиджра аргумент может быть любым числовым выражением, которое обозначает дату и время от 01.01.100 (2 августа 718 г. по григорианскому календарю) до 03.04.9666 (31 декабря 9999 г. по григорианскому календарю).
Примеры запросов
Expression |
Результаты |
SELECT DateofSale, Weekday([DateofSale]) AS Expr1 FROM ProductSales; |
Возвращает значения из поля DateofSale и числа, представляющего «День недели» этих значений даты. |
SELECT DateofSale, Weekday([DateofSale];2) AS NewWeekDay FROM ProductSales; |
Возвращает значения из поля DateofSale и числа, представляющего «День недели» этих значений даты. (считая понедельник первым днем недели). |
Пример VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В этом примере с помощью функции Weekday определяется день недели для указанной даты.
Dim MyDate, MyWeekDay
MyDate = #February 12, 1969# ' Assign a date.
MyWeekDay = Weekday(MyDate)
' MyWeekDay contains 4 because
' MyDate represents a Wednesday.
Читать онлайн «SQL за 24 часа» — RuLit
December 31, 1999
Тогда необходимо конвертировать дату из формата DATETIME в символьный. Это делается с помощью соответствующих функций, применение которых будет рассматриваться в следующих разделах.
Шаблоны представления дат Sybase
УУ год
qq квартал
mm месяц
dy день года
wk неделя
dw день недели
hh час
mi минута
ss секунда
ms миллисекунда
Шаблоны представления дат Oracle_____________________________
AD Н. Э.
AM ДО ПОЛУДНЯ
ВС ДО Н. Э.
CC столетие
D номер дня недели
DD номер дня месяца
DDD номер дня года
DAY название дня недели (MONDAY)
Day название дня недели (Monday)
day название дня недели (monday)
Шаблоны предстявления дат Oracle |
|
DY Dy dy HH НН12 НН24 J MI MM MON Mon mon MONTH Month month PM Q KM RR 3 SSSSS SYYYY W WW Y YY YYY YYYY YEAR Year year |
трехбуквенное сокращение для дня недели (MON) трехбуквенное сокращение для дня недели (Моп) трехбуквенное сокращение для дня недели (топ) час дня час дня час дня в 24-часовом формате день по юлианскому календарю с 12-31-4713 до н. э. минута часа номер месяца трехбуквенное сокращение для месяца (JAN) трехбуквенное сокращение для месяца (Jan) трехбуквенное сокращение для месяца (Jan) название месяца (JANUARY) название месяца (January) название месяца (January) после полудня номер квартала римский номер месяца две цифры года секунда минуты число секунд со времени полуночи год со знаком: например, 500 г. до н. э. = -500 номер недели месяца номер недели года последняя цифра года последние две цифры года последние три цифры года год год словами (NINETEEN-NINETY-NINE) год словами (Nineteen-Ninety-Nine) год словами (nineteen-ninety-nine) |
Преобразование дат в строки символов
Значения типа DATETIME конвертируют (преобразуют) в символьные строки для того, чтобы иметь возможность изменить представление дат при выводе данных запроса. Для этого используются функции преобразования. Вот пример преобразования значения даты и времени в символьную строку в запросе SQL Server:
SELECT DATE_HIRE = DATENAME(MONTH, DATE_HIRE)
FROM EMPLOYEE_PAY__TBL
DATE_HIRE
May
June
August
June
July
January
6 rows affected.
В следующем примере для преобразования используется функция TO_CHAR из Oracle:
SELECT DATE_HIRE, TO_CHAR(DATE_HIRE,’Month dd, yyyy’) HIRE
FROM EMPLOYEE_PAY_TBL;
DATE_HIRE HIRE
23-MAY-89 May 23, 1989
17-JUN-90 June 17, 1990
14-AUG-94 August 14, 1994
28-JUN-97 June 28, 1997
22-JUL-96 July 22, 1996
14-JAN-91 January 14, 1991
6 rows selected.
Преобразование символьных строк в даты
Следующий пример иллюстрирует один из способов преобразования символьной строки в формат даты. После преобразования соответствующие данные можно сохранить в столбце, имеющем атрибут типа DATETIME.
SELECT TO_DATE(‘JANUARY 01 1999′,’MONTH DD YYYY’)
FROM EMPLOYEE_PAY_TBL;
TO_DATE(‘
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
Ol-JAN-99
6 rows selected.
Вы, наверное, обратили внимание на то, что в выводе запроса представлены 6 строк, хотя в условии предлагается только одна дата. Такой результат получен по причине того, что преобразование выбиралось для данных таблицы EMPLOYEE_PAY_TBL, в которой шесть строк. Преобразование выполнялось для каждой из строк таблицы.
Резюме
Вы получили представление о значениях типа DATETIME, определяемых на базе стандарта ANSI. Но как и в случае многих других элементов SQL, в большинстве реализаций языка имеются отклонения имен функций и их синтаксиса от стандарта SQL, хотя лежащие в их основе концепции определяются стандартом. На предыдущем уроке вы видели, как варьируют в зависимости от реализации языка предлагаемые функции, а в ходе этого урока вы получили возможность увидеть подобные отклонения для типов даты и времени и используемых с ними функций и операторов. Не забывайте о том, что не все предлагаемые здесь примеры будут работать в рамках используемой вами реализации SQL, но вы должны понять принципы работы со значениями дат и времени, которые применимы в любой реализации языка.
Вопросы и ответы
По каким причинам в различных реализациях наблюдаются отклонения от стандартного набора типов данных и функций?
Такие различия в реализациях языка возникают, главным образом, по причине различного подхода производителей к выбору способа внутреннего хранения данных и, соответственно, оптимальных средств для извлечения этих данных. Все производители обязаны лишь обеспечить средства для хранения значений дат и времени на основе требований ANSI, предполагающих для дат и времени такие компоненты как год, месяц, день, час, минута, секунда и т. д.
Если я хочу сохранить дату и время не так, как предлагается в той конкретной реализации SQL, которую использую я, то какие возможности для этого у меня имеются?
Даты можно сохранить практически в любом виде, если сохранять их в столбце с атрибутами символьной строки переменной длины. Главное, о чем нужно не забывать, что при сравнении значений дат необходимо преобразовать строку со значением даты в значение подходящего типа DATETIME.
Практикум
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, «Ответы».
Тесты
1. Откуда извлекаются системные дата и время?
2. Назовите стандартные компоненты значения типа DATETIME.
3. Какой фактор может оказаться важным при представлении и сравнении значений дат и времени, если ваша компания имеет статус международной организации?
4. Можно ли сравнить значение даты в виде символьной строки со значением даты типа DATETIME?
Упражнения
Запишите операторы SQL для представленных ниже упражнений, основываясь на следующей информации.
Используйте SYSDATE для получения текущих даты и времени. Используйте таблицу с именем DATES.
Для преобразования дат в символьные строки используйте функцию TO_CHAR со следующим синтаксисом:
TO_CHAR(‘выражение’,’шаблон представления даты’)
Для преобразования символьных строк в даты используйте функцию TO_DATE со следующим синтаксисом:
TO_DATE(‘выражение’,’шаблон представления даты’) Информация о шаблонах представления дат дана в следующей таблице.
УСТАНОВИТЬ ДАТУПЕРВОГО (Transact-SQL) — SQL Server
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
- 2 минуты на чтение
Применяется к: SQL Server Azure SQL База данных Azure SQL Управляемый экземпляр Azure Synapse Analytics Analytics Platform System (PDW)
Устанавливает первый день недели в число от 1 до 7.
Обзор всех типов данных и функций даты и времени Transact-SQL см. в разделе Типы и функции даты и времени (Transact-SQL).
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- Синтаксис для SQL Server и базы данных SQL Azure УСТАНОВИТЬ ДАТУ ПЕРВОГО { число | @number_var }
-- Синтаксис для Azure Synapse Analytics и хранилища параллельных данных УСТАНОВИТЬ ПЕРВУЮ ДАТУ 7 ;
Примечание
Для просмотра синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий см. документацию по предыдущим версиям.
Аргументы
номер | @ number_var
Целое число, указывающее первый день недели. Это может быть одно из следующих значений.
Значение | Первый день недели |
---|---|
1 | Понедельник |
2 | вторник |
3 | Среда |
4 | Четверг |
5 | Пятница |
6 | Суббота |
7 (по умолчанию, английский язык США) | Воскресенье |
Чтобы увидеть текущую настройку SET DATEFIRST, используйте функцию @@DATEFIRST.
Параметр SET DATEFIRST устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.
Указание SET DATEFIRST не влияет на DATEDIFF. DATEDIFF всегда использует воскресенье как первый день недели, чтобы обеспечить детерминированность функции.
Разрешения
Требуется членство в роли public .
Примеры
В следующем примере отображается день недели для значения даты и показаны результаты изменения DATEFIRST
установка.
-- УСТАНОВИТЕ DATEFIRST на значение по умолчанию для английского языка США, равное 7. УСТАНОВИТЬ ПЕРВУЮ ДАТУ 7; SELECT CAST('1999-1-1' AS datetime2) AS SelectDate ,DATEPART(dw, '1999-1-1') AS DayOfWeek; -- 1 января 1999 года -- пятница. Потому что английский по умолчанию в США -- указывает воскресенье как первый день недели, DATEPART из 1999-1-1 -- (пятница) дает значение 6, потому что пятница — шестой день -- неделя, когда вы начинаете с воскресенья в качестве дня 1. УСТАНОВИТЬ ПЕРВУЮ ДАТУ 3; -- Поскольку среда теперь считается первым днем недели, -- DATEPART теперь показывает, что 1999-1-1 (пятница) — третий день -- неделя. Следующая функция DATEPART должна возвращать значение 3. SELECT CAST('1999-1-1' AS datetime2) AS SelectDate ,DATEPART(dw, '1999-1-1') AS DayOfWeek; ИДТИ
См. также
Операторы SET (Transact-SQL)
SQL Server Helper — функция получения первого дня недели
Главная > Определяемые пользователем функции > Функция получения первого дня недели
Получить функцию первого дня неделиДовольно часто приложения создают отчет, содержащий транзакций или записей, начиная с начала недели до текущего день. Получить текущий день легко, потому что это достигается из GETDATE(), но получение начала недели немного сложный. Определяемая пользователем функция ниже принимает ввод даты и возвращает первый день недели для этой даты ввода.
СОЗДАТЬ ФУНКЦИЮ [dbo].[ufn_GetFirstDayOfWeek] ( @pInputDate ДАТАВРЕМЯ ) ВОЗВРАЩАЕТ ДАТУВРЕМЯ НАЧИНАТЬ УСТАНОВИТЬ @pInputDate = CONVERT (VARCHAR (10), @pInputDate, 111) RETURN DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) КОНЕЦ ИДТИ
Описание
Получить первый день недели в основном просто, если вы знаете Хитрость. Каждый день недели представлен числом от 1 до 7, где 1 — первый день недели. Учитывая любой день недели, чтобы получить вернуться к первому дню, вам просто нужно вычесть из текущего дня количество дней, равное дню недели, затем добавить 1 день.
Например, если сегодня пятый день недели, чтобы вернуться к первому день, вычтите из текущего дня 5 дней и прибавьте 1. Итак, если сегодня «01.09.2005», четверг, пятый день недели в США. По английскому календарю, вычитая 5 дней из этой даты, получается «27.08.2005», тогда добавление 1 дня становится «28.08.2005», воскресеньем, которое является первым днем недели. на дату «01.09.2005».
- SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111) — Первый шаг — получить часть даты входного параметра, потому что, поскольку он определен как тип данных DATETIME, он может содержать часть времени. Преобразование входной даты в VARCHAR(10) с форматом 101, который находится в «ГГГГ/ММ/ДД» выполняет задачу получения части даты ввода дата. Поскольку принимающая переменная определена как тип данных DATETIME, нет необходимости явно возвращать это значение к DATETIME, потому что SQL Server неявно преобразует его в тип данных DATETIME.
- RETURN DATEADD(DD, 1 — DATEPART(DW, @pInputDate), @pInputDate) — Это шаг отвечает за получение первого дня недели для данного ввода дата. В основном он вычитает из даты ввода количество дней, равное ко дню недели введенной даты, а затем добавляет к нему 1 день. Это может быть сбивает с толку, чтобы увидеть, как день недели вычитается из даты ввода, а затем еще один день добавляется с формулой выше. Другой способ написания приведенный выше оператор: DATEADD(DD, -DATEPART(DW, @pInputDate) + 1, @pInputDate), что эквивалентно вычитанию дня недели плюс 1 день.
Получение только части даты любого типа данных DATETIME или SMALLDATETIME довольно сложно. общая задача, которую рекомендуется создать в виде отдельной пользовательской функции как раз для этой задачи.