Помесячное сравнение дат.

User-2
Дата: 23.11.2006 11:43:52
Задача 1: получить записи, у которых в поле даты значение месяца меньше/равно текущему.
Задача 2: получить записи, у которых в поле даты значение месяца находится в интервале: от СледующийМесяцЗаТекущим до ШестойМесяцПослеТекущего (для Ноября это интервал Декабрь-Май).
В обоих случаях учитывается ест-нно и год даты.
В первом случае, я так понял, сначала нужно проверить:
If Year(ПроверяемаяДата) <= Year(Date) Then
Как вторую задачу обработать слабо представляю - февраль 2007, например, подходит под условие, а февраль 2008 - нет, поэтому проверка:
If Year(ПроверяемаяДата) > Year(Date) Then
бессмыслена - вернется и 2007 и 2008 годы.
bubucha
Дата: 23.11.2006 11:52:34
автор
В первом случае, я так понял, сначала нужно проверить:

нет
автор
Как вторую задачу обработать слабо представляю

кроме ">" есть еще и "<" и битвин...
adv
Дата: 23.11.2006 12:01:06
А ещё есть month()
и условия можно проверять по and
silversnake
Дата: 23.11.2006 12:08:21
используй datediff(), ИМХО самый прямой вариант, сможешь задавать интервал в каких угодно единицах
mds_world
Дата: 23.11.2006 12:11:54
User-2
Задача 1: получить записи, у которых в поле даты значение месяца меньше/равно текущему.
Задача 2: получить записи, у которых в поле даты значение месяца находится в интервале: от СледующийМесяцЗаТекущим до ШестойМесяцПослеТекущего (для Ноября это интервал Декабрь-Май).
В обоих случаях учитывается ест-нно и год даты.
В первом случае, я так понял, сначала нужно проверить:
If Year(ПроверяемаяДата) <= Year(Date) Then
Как вторую задачу обработать слабо представляю - февраль 2007, например, подходит под условие, а февраль 2008 - нет, поэтому проверка:
If Year(ПроверяемаяДата) > Year(Date) Then
бессмыслена - вернется и 2007 и 2008 годы.


На второе условие можно так
If DateSerial(Year([ПроверяемаяДата]),Month([ПроверяемаяДата]),1) <= Date And _
Date < DateSerial(Year(DateAdd("m", 7, [ПроверяемаяДата])),Month(DateAdd("m", 6, [ПроверяемаяДата])),1) Then
mds_world
Дата: 23.11.2006 12:14:33
Ошибка вкралась в ужасающую формулу. Хотел дать просмотр, а нажал отправить.
If DateSerial(Year([ПроверяемаяДата]),Month([ПроверяемаяДата]),1) <= Date And _
Date < DateSerial(Year(DateAdd("m", 7, [ПроверяемаяДата])),Month(DateAdd("m", 7, [ПроверяемаяДата])),1) Then
BoNiM
Дата: 23.11.2006 13:29:48
Задача 1.
If [ПроверяемаяДата] < DateSerial(Year(Date), Month(Date)+1, 1) Then
Задача 2.
If [ПроверяемаяДата] >= DateSerial(Year(Date), Month(Date)+1, 1) And _
   [ПроверяемаяДата] < DateSerial(Year(Date), Month(Date)+7, 1) Then
User-2
Дата: 23.11.2006 13:33:49
Коллеги, а не трудно поподробнее? Как-то я в функциях Дат не очень...
If DateSerial(Year([ПроверяемаяДата]),Month([ПроверяемаяДата]),1) <= Date And _
Date < DateSerial(Year(DateAdd("m", 7, [ПроверяемаяДата])),Month(DateAdd("m", 7, [ПроверяемаяДата])),1) Then
ну как понял: если "сегодня" больше/равно чем первое число месяца ПроверяемойДаты и меньше чем первое число последнего в интервале месяца.
Если так, то не понятно к чему это? Мне надо обрабатывать не текущую дату, а ПроверяемуюДату, вычисляя: находится ли ее месяц до текущего, равен текущему, находится в интервале ТекМес+1 - ТекМес+6 или находится за пределами этого интервала?
rok
Дата: 23.11.2006 14:37:26
1. Between Date and <Date
Из Вашего вопроса я не понял надо возвращать записи разных лет,в которых месяц отвечает условиям отбора или нет? Вот условие возвращающее записи с разницей от 1 до 6 месяцев от текущей даты
2. Between DateAdd("m", 1, Date) And DateAdd("m", 6, Date)
User-2
Дата: 23.11.2006 15:48:36
записи разных летв которых месяц отвечает условиям
Идея всей этой байды такая: отчет Excel (очень упрощенно) имеет 1 столбец с ПроверяемойДатой и 6 столбцов - в заголовках названия месяцев, от ТекМесяц+1 до ТекМесяц+6. В зависимости от месяца ПроверяемойДаты, в ячейке одного из 6-и столбцов заносится, ну скажем, 0.
Если б отчет создавался сегодня, то:
- строки, где месяц ПроверяемойДаты(с учетом года ест-нно!) <= месяца Текущей даты(с учетом года!) заимели б 0 в ст.ТекМесяц+1 (10.05.04, 22.11.06...)
- строки, где месяц ПроверяемойДаты(с учетом года!) > месяца Текущей даты(с учетом года!) и <= месяца ТекМесяц+6(с учетом года!) получат 0 в столбце который совпадает месяцем ПроверяемойДаты (05.12.06 - 0 в ст.ТекМес+1, 16.04.07 - 0 в ст.ТекМес+5 и т.п.)
- строки, где месяц ПроверяемойДаты(с учетом года!) > месяца ТекМесяц+6(с учетом года!) - игнорируются.