powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как по-проще по номеру недели определить дату ее начала и окончания?
6 сообщений из 6, страница 1 из 1
Как по-проще по номеру недели определить дату ее начала и окончания?
    #32387551
Alex112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, весь вопрос. Подскажите, пожалуйста, а то у самого какой-то огород получается ...
...
Рейтинг: 0 / 0
Как по-проще по номеру недели определить дату ее начала и окончания?
    #32387566
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не самый красивый вариант, но вроде работающий:

CDate(DateSerial(год,1,1)+7*неделя-10)
CDate(DateSerial(год,1,1)+7*неделя-4)
...
Рейтинг: 0 / 0
Как по-проще по номеру недели определить дату ее начала и окончания?
    #32387589
Alex112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

спасибо, работает. Но тут нужно обработать ситуации для первой и последней недели года, так чтобы не залезть, соответственно на предыдущий или следующий год. Что-то мне подсказывает, что можно получить нужные даты сразу, без проверки этих двух исключений.
...
Рейтинг: 0 / 0
Как по-проще по номеру недели определить дату ее начала и окончания?
    #32387639
\/ig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
date - weekday(date) +1
date-weekday(date) +7
...
Рейтинг: 0 / 0
Как по-проще по номеру недели определить дату ее начала и окончания?
    #32387675
Alex112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока сделал так, взяв за основу вариант Владимир Саныча, и ввел проверки о которых говорил выше. Может кому пригодится:

Dim WeekStart As Date 'Дата начала недели
Dim WeekEnd As Date 'Дата окончания недели

Sub WeekStartEnd(N As Long)
'N - порядковый номер недели в году
WeekStart = CDate(DateSerial(Year(Date), 1, 1) + 7 * N - 10)
If Year(WeekStart) < Year(Date) Then
WeekEnd = WeekStart + 6 + #11:59:59 PM#
WeekStart = DateSerial(Year(Date), 1, 1)
Else
If Year(WeekStart + 6) > Year(Date) Then
WeekEnd = DateSerial(Year(Date), 12, 31) + #11:59:59 PM#
Else
WeekEnd = WeekStart + 6 + #11:59:59 PM#
End If
End If
End Sub
...
Рейтинг: 0 / 0
Как по-проще по номеру недели определить дату ее начала и окончания?
    #32388965
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько экстравагантный способ :), но может быть кому-нибуть пригодится.
Код: plaintext
1.
2.
3.
4.
5.
SELECT datepart( "ww" ,dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n) AS  WeekNumber,
        min(dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n) AS FirstWeekDay,
        max(dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n) AS LastWeekDay
FROM Nums AS a, Nums AS b, Nums AS c
WHERE year(dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n )=year(date())
GROUP BY datepart( "ww" ,dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n)

Где Nums - вспомогательная таблица с числами от 0 до 9
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как по-проще по номеру недели определить дату ее начала и окончания?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]