Функция Weekday

Access

Выражения

Функции даты и времени

Функции даты и времени

Функция Weekday

Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше

Возвращает значение Variant (Integer), содержащее целое число, соответствует дню недели.

Синтаксис

Weekday( дата [, первый_день_недели ] )

Функция Weekday имеет следующие аргументы:

Аргумент

Описание

дата

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

первый_день_недели

Необязательный аргумент. Константа, задающая первый день недели. Если не указано, предполагается vbSunday.

Параметры

Аргумент первый_день_недели может принимать следующие значения:

Константа

Значение

Описание

vbUseSystem

0

Используются параметры API NLS.

vbSunday

1

Воскресенье (по умолчанию)

vbMonday

2

Понедельник

vbTuesday

3

Вторник

vbWednesday

4

Среда

vbThursday

5

Четверг

vbFriday

6

Пятница

vbSaturday

7

Суббота

Возвращаемые значения

Функция Weekday возвращает одно из следующих значений:

Константа

Значение

Описание

vbSunday

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 г. по григорианскому календарю).

Примеры запросов

Выражение

Результаты:

SELECT DateofSale, Weekday([DateofSale]) AS Expr1 FROM ProductSales;

Возвращает значения из поля «ДатаofSale» и число, представляющее «День Недели» этих значений дат.

(По умолчанию воскресенье считается первым днем недели; 1).

SELECT DateofSale, Weekday([DateofSale],2) AS NewWeekDay FROM ProductSales;

Возвращает значения из поля «ДатаofSale» и число, представляющее «День Недели» этих значений дат. (понедельник — это первый день недели).

Пример 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.

Условия фильтра по дате—ArcGIS Dashboards

Даты состоят из двух частей: даты и времени. В целом, при настройке условия фильтра поля даты, можно создать два типа условий: фиксированная дата и относительная дата.

Чтобы отфильтровать объекты по дате, слой должен поддерживать стандартные функции SQL.

Для фильтра дат введите составляющую времени в местном часовом поясе. На самом деле, операционная панель выполняет поиск свойств целевого слоя на наличие информации о часовом поясе. При обнаружении информации о часовом поясе запрос будет отправлен в этом часовом поясе. Это может включать в себя конвертацию входных значений в часовой пояс целевого слоя. Если информация о часовом поясе не найдена, перед отправкой операционная панель конвертирует входные значения во всемирное координированное время (UTC).

Подсказка:
  • Даты в Размещенных векторных слоях всегда хранятся в UTC. Если вы указываете часовой пояс источника при публикации размещенного векторного слоя, в процессе размещения значения дат конвертируются в UTC.
  • ArcGIS Pro и ArcMap (10.4. более новые) позволяют задать информацию о часовом поясе при публикации сервиса, ссылающегося на данные, которые хранятся в зарегистрированной многопользовательской базе данных и базе геоданных.

Условия с фиксированной датой

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

Вкладка Поле отображается, только если слой элемента содержит более одного поля даты.

Условие фильтра по фиксированной дате может быть создано только со следующими операторами:

  • равно
  • не соответствует
  • было
  • есть или было
  • после
  • есть или будет

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

Условия с относительной датой

Условия с относительной датой включают диапазон значений дат. Диапазон может быть закреплен на текущем моменте или включать его (сейчас), или это может быть предопределенный период (например, прошлая неделя). Указываемый диапазон или тип закрепления зависят от выбранного оператора.

ОператорТип закрепления

в прошлом

Сейчас

до прошлого

Сейчас

в будущем

Сейчас

после будущего

Сейчас

равно

Сейчас или предопределенный

не соответствует

Сейчас или предопределенный

было

Сейчас или предопределенный

есть или было

Предопределенный

после

Сейчас или предопределенный

есть или будет

Предопределенный

Закрепление на текущий момент

Преимущество использования диапазонов дат с закреплением на текущий момент состоит в том, что они позволяют выполнять обновление элементов в соответствии с изменением данных. Например, индикатор, настроенный на отображение последних 30 минут может отображать новые данные каждую минуту, если соответствующий слой обновляется с такой частотой. Однако индикатор, отображающий данные вчерашнего дня, будет отображать новые данные только после изменения сегодняшней даты (т.е., после полуночи), независимо от интервала обновления слоя.

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

Множители единиц всегда должны быть целыми значениями. Например, если вы хотите фильтровать по половине дня, ваш фильтр должен равняться 12 часов, а не 0,5 дня.

Единицы времени измеряются с настоящего момента (текущее время). Например, если временной диапазон находится в пределах последних 24 часов, то множитель единиц равен 24, а единица измерения — часы. Диапазон начинается за 24 часа перед текущим моментом и продолжается до настоящего момента.

Единицы времени по календарю включают полные дни, начиная с 00:00:00 (12:00:00 a.m.) до 23:59:59 (11:59:59 p.m.) для каждого дня в диапазоне, с учетом местного часового пояса пользователя. Например, если диапазон дат составляет последние 7 дней, используется множитель единиц 7 и единица измерения — день. Диапазон начинается в 00:00:00 (12:00:00 a.m.) за 7 дней перед сегодняшним днем.

В следующей таблице описаны диапазоны дат с закреплением на текущий момент Помните, что все значения времени даются в соответствии с локальным часовым поясом.

ОператорЕдиница времениОписание

в прошлом

секунды

N секунд перед текущим моментом.

минуты

N минут перед текущим моментом.

часы

N часов перед текущим моментом.

дни

Начинается в 00:00:00 (12:00:00 a.m.) за N дней перед текущим днем и до текущего момента.

недели

Начинается в 00:00:00 (12:00:00 a.m.) в первый день недели за N недель перед текущим моментом.

месяцы

Начинается в 00:00:00 (12:00:00 a.m.) в первый день месяца за N месяцев перед текущим моментом.

кварталы

Начинается в 00:00:00 (12:00:00 a. m.) в первый день квартала за N кварталов перед текущим моментом.

годы

Начинается в 00:00:00 (12:00:00 a.m.) в первый день года за N лет перед текущим моментом.

до прошлого

секунды

N секунд перед текущим моментом и до бесконечности.

минуты

N минут перед текущим моментом и до бесконечности.

часы

N часов перед текущим моментом и до бесконечности.

дни

Начинается в 00:00:00 (12:00:00 a.m.) за N дней перед текущим днем и продолжается до бесконечности.

недели

Начинается в 00:00:00 (12:00:00 a.m.) за N недель перед текущей неделей и продолжается до бесконечности.

месяцы

Начинается в 00:00:00 (12:00:00 a.m.) за N месяцев перед текущим месяцем и продолжается до бесконечности.

кварталы

Начинается в 00:00:00 (12:00:00 a.m.) за N кварталов перед текущим кварталом и продолжается до бесконечности.

годы

Начинается в 00:00:00 (12:00:00 a.m.) за N лет перед текущим годом и продолжается до бесконечности.

в будущем

секунды

Начинается сейчас и продолжается N секунд.

минуты

Начинается сейчас и продолжается N минут.

часы

Начинается сейчас и продолжается N часов.

дни

Начинается сейчас и продолжается до 23:59:59 (11:59:59 p. m.) N дней с текущего момента.

недели

Начинается сейчас и продолжается до 23:59:59 (11:59:59 p.m.) N недель с текущего момента.

месяцы

Начинается сейчас и продолжается до 23:59:59 (11:59:59 p.m.) последнего дня месяца за N месяцев до текущего момента.

кварталы

Начинается сейчас и продолжается до 23:59:59 (11:59:59 p.m.) в последний день квартала за N кварталов до текущего момента.

годы

Начинается сейчас и продолжается до 23:59:59 (11:59:59 p. m.) в последний день года за N лет до текущего момента.

после будущего

секунды

N секунд после текущего момента и до бесконечности.

минуты

N минут после текущего момента и до бесконечности.

часы

N часов после текущего момента и до бесконечности.

дни

Начинается в 00:00:00 (12:00:00 a.m.) через N дней после текущего и до бесконечности.

недели

Начинается в 00:00:00 (12:00:00 a. m.) через N недель после текущей недели и до бесконечности.

месяцы

Начинается в 00:00:00 (12:00:00 a.m.) через N месяцев после текущего месяца и до бесконечности.

кварталы

Начинается в 00:00:00 (12:00:00 a.m.) через N кварталов после текущего квартала и до бесконечности.

годы

Начинается в 00:00:00 (12:00:00 a.m.) через N лет после текущего года и до бесконечности.

было

Сейчас

Включает все до текущего момента.

после

Сейчас

Включает все, начиная с текущего момента.

равно

С начала года

Начинается в 00:00:00 (12:00:00 a.m.) 1 января текущего года и продолжается до текущего момента.

не соответствует

С начала года

Исключает все с начала текущего года. Период к настоящему моменту текущего года начинается в 00:00:00 (12:00:00 a.m.) 1 января текущего года и продолжается до текущего момента.

Закрепление на заданном периоде

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

При выборе оператора, связанного с заранее заданным закреплением, необходимо указать интервал на вкладке Период.

Эти периоды основаны на следующих единицах. Помните, что время начала и окончания всегда основаны на локальном часовом поясе.

Заранее заданный период времениОписание

Сегодня

Начинается в 12:00:00 a.m. текущего дня и продолжается 24 часа.

Вчера

Начинается в 12:00:00 a. m. предыдущего дня и продолжается 24 часа.

Завтра

Начинается в 12:00:00 a.m. завтрашнего дня и продолжается 24 часа.

Эта неделя

Начинается в 12:00:00 a.m. первого дня текущей недели и продолжается 7 дней.

Последняя неделя

7-дневный период, который заканчивается сразу перед началом текущей недели. Прошлая неделя начинается в 12:00:00 a.m. первого дня прошлой недели и продолжается 7 дней.

Следующая неделя

7-дневный период, который начинается сразу после окончания текущей недели. Следующая неделя начинается в 12:00:00 a.m. первого дня следующей недели и продолжается 7 дней.

Этот месяц

Начинается в 12:00:00 a.m. первого дня текущего месяца и продолжается до 11:59:59 p.m. последнего дня месяца.

Прошлый месяц

Начинается в 12:00:00 a.m. первого дня прошлого месяца и продолжается до 11:59:59 p.m. последнего дня месяца.

Следующий месяц

Начинается в 12:00:00 a.m. первого дня следующего месяца и продолжается до 11:59:59 p.m. последнего дня месяца.

Этот квартал

Начинается в 12:00:00 a. m. первого дня текущего квартала и продолжается три месяца, до 11:59:59 p.m. последнего дня квартала.

Прошлый квартал

Начинается в 12:00:00 a.m. первого дня предыдущего квартала и продолжается три месяца, до 11:59:59 p.m. последнего дня квартала.

Следующий квартал

Начинается в 12:00:00 a.m. первого дня следующего квартала и продолжается три месяца, до 11:59:59 p.m. последнего дня квартала.

Этот год

Начинается в 00:00:00 (12:00:00 a.m.) 1 января текущего года и продолжается 12 месяцев до 23:59:59 (11:59:59 p.m.) 31 декабря.

Последний год

Начинается в 00:00:00 (12:00:00 a. m.) 1 января года, непосредственно предшествующего текущему году, и продолжается 12 месяцев до 23:59:59 (11:59:59 p.m.) 31 декабря.

Следующий год

Начинается в 00:00:00 (12:00:00 a.m.) 1 января года, непосредственно следующего за текущим годом, и продолжается 12 месяцев до 23:59:59 (11:59:59 p.m.) 31 декабря.


Отзыв по этому разделу?

sql — Запрос диапазона дат в зависимости от дня недели

Задавать вопрос

Спросил

Изменено 7 лет, 6 месяцев назад

Просмотрено 514 раз

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

Я пытаюсь сделать запрос, который представляет записи за текущий день и накануне, но если это понедельник, отображать записи за все выходные, а также за текущий день.

Логика работает, но я не могу заставить работать диапазоны дат. Я могу заставить единственные даты работать.

 IIf(День недели(Дата())=2,Дата()-2,Дата())
 

Если я попытаюсь заменить отдельные даты диапазонами, например:

 IIf(День недели(Дата())=2, Между датой()-2 и датой(), между датой()-1 и датой())
 

Access пытается добавить метки из таблицы, на которую ссылается этот запрос. Это приводит к пустому результату запроса.

 IIf(День недели(Дата())=2,([Таблица].[Отчетная дата]) Между датой()-2 и датой(),([Таблица].[Отчетная дата]) Между датой()-1 И Дата ())
 

Я новичок в Access, поэтому не совсем понимаю, что происходит и почему он пытается добавить эти метки.

Если я ошибаюсь, дайте мне знать.

  • sql
  • date
  • ms-access
  • iif

Синтаксис для между :

 <значение> между <нижняя граница> и <верхняя граница>
 

Таким образом, это неверное выражение:

 Между датой()-2 и датой()
 

Попробуйте что-то вроде:

 YourColumn между Date()-2 и Date()
 

Или, альтернативно, без между :

 Date()-2 <= YourColumn и YourColumn <= Date()
 

3

Вы можете использовать DATEPART() для получения дня недели. Например, понедельник считается 2.

Функция DatePart использует числа 1-7, а воскресенье равно 1.

пр.

Объявите вашу переменную и используйте DATEPART(w,GETDATE()).

После этого вы можете использовать свои условия:

 if (@todayDate_PT = 2)
     'запрос'
еще
     'запрос'
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Получить дату начала недели и дату окончания недели с помощью SQL Server

  • 278,4к

Введение

 

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

 

Список функций даты и времени

  • DATEADD()
  • DATEPART()
  • GETDATE()
  • CAST()

DATEADD()

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


DATEPART()

DATEPART() функция возвращает целочисленное значение конкретной части даты переданной даты.
Эта функция возвращает значение типа int. Datepart(datepart, date) принимает дату и дату, т.е. 2 параметра.
Datepart является частью даты, например. день месяц год.

 

GETDATE() Возвращает текущую системную метку времени базы данных в виде значения даты и времени. Это значение получено из
операционной системы компьютера, на котором работает экземпляр SQL Server.

 

CAST() Преобразует выражение одного типа данных в другой.