AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2005, 11:44   #1  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
? Первое число предыдущего месяца.
Всем, добрый день!

Назрел вопрос получить от заданной даты, первое число предыдущего месяца, я поискал в справке по функциям и ничего оригинальней не придумал. Верно ли такое решение или можно это решить этот вопрос по-другому?

PHP код:
Date firstDayOfPreviousMonth(Date  _date)
{

   
str         strDate;
   
int         mon;
   
int         day 1;
   
int         aYear;
   ;

   
mon MthOfYr(_date);
   
aYear Year(_date);
   if(
mon == 1)
   {
        
mon 12;
        
aYear--;
   }
   else
    {
        
mon--;
    }

    
strDate int2str(day) + '.' int2str(mon) + '.' int2str(aYear);

    return 
str2date(strDate,123);


Старый 05.03.2005, 12:38   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
См. Global::dateStartMth()

Думаю, что проще было бы написать
PrevMonthStart = dateStartMth(prevMth(MyDate));

Чуть сложнее для понимания, но более эффективно
PrevMonthStart = dateStartMth(MyDate - dayofMth(myDate));
За это сообщение автора поблагодарили: SuperStar88 (1).
Старый 05.03.2005, 12:49   #3  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Спасибо!
Старый 05.03.2005, 16:03   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
2 Mazzy:
А не мог бы ты рассказать детальней, почему второй вариант более быстрый ("эффективный")??

Очень уж интересно.
Старый 05.03.2005, 20:47   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
В описании функции prevMth

Цитата:
Description
Returns the date in the previous month which corresponds most closely to the date specified by date.

Examples
PrevMth(31\03\1996)
returns the date '29\02\1996' (leap year).
PrevMth(29\02\1998)
returns the date '28\01\1998'.
Я предполагаю, что вычисление most closely даты в предыдущем месяце требует больших ресурсов, нежели два вычисления dayofMth(myDate) с парой арифметических функций. Но на практике не проверял.

Спасибо за вопрос.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему в SP5 пропал отпуск предыдущего месяца? Spider DAX: Функционал 4 21.02.2007 15:23
Какой метод возвращает последний день месяца? vasiliy DAX: Программирование 4 27.02.2006 13:43
Разбить число sah DAX: Программирование 5 26.02.2006 17:24
Название месяца и дробные числа строкой Lanai DAX: Программирование 8 20.01.2006 11:49
Lookup даты для выбора месяца Antidot DAX: Программирование 0 21.01.2005 21:24
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:16.