Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Полтора месяца - то не два
 
 автор: час   (09.02.2010 в 12:21)   личное сообщение
 
 


DateAdd('m', -2, Date())))


А как правильно написать, чтобы задать интервал в 1.5 месяца

чё прям так и писать

DateAdd('m', -1.5 Date())))

  Ответить  
 
 автор: Explorer   (09.02.2010 в 12:31)   личное сообщение
 
 

формального интервала в полтора месяца не существует, соответсвенно его не может существовать и в БД в любом виде

(хотя бы потому, что в некоторых месяцах нечетное количество дней)

если нужен такой интервал - указывай в днях (45 дней например)

  Ответить  
 
 автор: час   (09.02.2010 в 12:32)   личное сообщение
 
 

спасибо!!!
Стало быть лучше так:

DateAdd('d', -45, Date())))"

  Ответить  
 
 автор: Explorer   (09.02.2010 в 12:38)   личное сообщение
 
 


Стало быть лучше так:



не уверен, если только интервал не указан явно в днях (45 дней)

"полтора месяца" неформализованный период - ИМХО лучше отказаться от такого просторечного определения

  Ответить  
 
 автор: час   (09.02.2010 в 12:41)   личное сообщение
 
 

Эт вот из-за чего.....
Данные из таблицы, старше 45 дней - что ы убирать автоматом.....................

поле проверки - дата 09.02.2010

  Ответить  
 
 автор: Explorer   (09.02.2010 в 12:46)   личное сообщение
 
 

зависит от объема данных и от характера выборки.

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

если аналитика не нужна а нужно только подрезать выборку "вглубь" - 45 дней нормальный общепринятый диапазон (можно брать фиксированный степ в глубину 15 дней: 15-30-45-60<?>; далее переходить на календарные месяцы)

  Ответить  
 
 автор: час   (09.02.2010 в 12:51)   личное сообщение
 
 

Спасибо!
Было 2 месяца....
Проболтался заказчику - тот говорит - один месяц и баста
но один месяц - ежедневного обрубания - это фиговато, потому как только перевалило за 31 прежних данных нет....
выбрал компромиссссссссссссссс

  Ответить  
 
 автор: kot_k_k   (09.02.2010 в 12:59)   личное сообщение
 
 

измени интервал - не 1,5 месяца, а 6 недель - вот тебе и полтора месяца

  Ответить  
 
 автор: Explorer   (09.02.2010 в 13:04)   личное сообщение
 
 

6 недель тоже неформализованный период если чо

хуже чем 45 дней ИМХО

  Ответить  
 
 автор: kot_k_k   (09.02.2010 в 13:23)   личное сообщение
 
 

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

  Ответить  
 
 автор: Explorer   (09.02.2010 в 13:33)   личное сообщение
 
 


неделя - это внутренний отчетный период у многих организаций


да и это нормально

а шесть недель это вообще не период :

  Ответить  
 
 автор: час   (09.02.2010 в 13:46)   личное сообщение
 
 

Оснавлюся, я на 45 днёв.

  Ответить  
 
 автор: Explorer   (09.02.2010 в 13:51)   личное сообщение
 
 

и вместо DateAdd заюзай DateDiff
для этих целей лучше подходит

  Ответить  
 
 автор: час   (09.02.2010 в 13:52)   личное сообщение
 
 

Да ?!

GLB_CONNECTION.Execute "DELETE USERS_TRANSACTIONS_TBL.*, USERS_TRANSACTIONS_TBL.DATE_RECORDS " _
& " From USERS_TRANSACTIONS_TBL " _
& " Where (((USERS_TRANSACTIONS_TBL.DATE_RECORDS) <= DateAdd('d', -45, Date())))"

  Ответить  
 
 автор: Explorer   (09.02.2010 в 13:56)   личное сообщение
 
 

а тут вообще лучше заюзать between :) наверное и/или просто Date()-45

хотя :))) - дело вскуса и общего стиля

Where USERS_TRANSACTIONS_TBL.DATE_RECORDS - 46 < Date()

насет битвин это я погорячился :)))

  Ответить  
 
 автор: час   (09.02.2010 в 14:15)   личное сообщение
 
 

Хорошо - тада оставлям как есть

  Ответить  
 
 автор: Lukas   (09.02.2010 в 14:21)   личное сообщение
 
 

Where USERS_TRANSACTIONS_TBL.DATE_RECORDS - 46 < Date()
Так вычисление:
USERS_TRANSACTIONS_TBL.DATE_RECORDS - 46
будет для каждой записи.

А так:
Where USERS_TRANSACTIONS_TBL.DATE_RECORDS < Date()-45
вычисление Date()-45 только один раз для всех записей.
зы. Если не ошибаюсь.

  Ответить  
 
 автор: час   (09.02.2010 в 14:28)   личное сообщение
 
 

Наверно....

  Ответить  
 
 автор: Explorer   (09.02.2010 в 14:30)   личное сообщение
 
 

<<SELECT FROM>> WHERE TRANSACTION_DATE NOT IN (<<SELECT>> TRANSACTION_DATE <<FROM>> WHERE TRANSACTION_DATE BETWEEN Date()-45 AND Date())



а вообще какой смысл дропать устаревшие данные ежедневно?

  Ответить  
 
 автор: Lukas   (09.02.2010 в 14:35)   личное сообщение
 
 



USERS_TRANSACTIONS_TBL.DATE_RECORDS


Блин, ну до чего-же нечитабельная конструкция, во всяком случае для меня.

  Ответить  
 
 автор: Explorer   (09.02.2010 в 14:36)   личное сообщение
 
 

нормально - нужно только привыкнуть

  Ответить  
 
 автор: Lukas   (09.02.2010 в 14:39)   личное сообщение
 
 

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

  Ответить  
 
 автор: Explorer   (09.02.2010 в 14:43)   личное сообщение
 
 

а я уже отвык ;)
собственно и начинал не с него :)

  Ответить  
 
 автор: час   (09.02.2010 в 15:12)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList