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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.03.2017, 20:26   #1  
Twin is offline
Twin
Участник
 
60 / 10 (1) +
Регистрация: 09.01.2002
Адрес: Omsk
DateTime1>DateTime2 in where
Всем привет!
Подскажите
можно ли построит запрос с where в Dax12, который отберет записи у которых даты отличаются не более чем на определенную величину?

whele select t1
where t1.datetime1>t1.datetime2+2 hours
Старый 16.03.2017, 06:02   #2  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Используйте DateTimeUtil::addHours()
X++:
    while select t1
        where t1.datetime1 > DateTimeUtil::addHours(t1.datetime2, 2);
__________________
// no comments
Старый 16.03.2017, 09:27   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от dech Посмотреть сообщение
Используйте DateTimeUtil::addHours()
Вы предлагаете функцию уровня приложения(AOS) применить в условии where, которое выполняется на уровне базы данных? посмотрите внимательнее t1.datetime2 - это не внешняя по отношению к запросу переменная, а часть самих данных над которыми происходит вычисление условия.
Старый 16.03.2017, 09:31   #4  
Twin is offline
Twin
Участник
 
60 / 10 (1) +
Регистрация: 09.01.2002
Адрес: Omsk
Не работает, дает ошибку
Недопустимое использование выражения WHERE.
Старый 16.03.2017, 09:34   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Попробуйте посмотреть в сторону Computed Column
http://stackoverflow.com/questions/2...omputed-column
За это сообщение автора поблагодарили: dech (1).
Старый 16.03.2017, 11:39   #6  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Вы предлагаете функцию уровня приложения(AOS) применить в условии where, которое выполняется на уровне базы данных? посмотрите внимательнее t1.datetime2 - это не внешняя по отношению к запросу переменная, а часть самих данных над которыми происходит вычисление условия.
Да, действительно не работает. Спасибо. Видимо, вычисляемые поля - единственно верное решение.
__________________
// no comments
Старый 16.03.2017, 12:43   #7  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
362 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Если не принципиален момент как делать запрос через while или через Query, то можно в query использовать расширенное условие, типа такого :

((%1.modifiedDateTime - %1.createdDateTime) > (2 / 24))

где %1 - это имя датасорса, вообщем поищите примеры как реализуются расширенные условия.

А 2 / 24 это эквивалент двух часов в данном случае, вникать особо не было времени, объяснение можно посмотреть вот тут - как посчитать в sql раздницу во времени в колонке DateTime

Т.е. SQL поддерживает операцию "-" для поля типа datetime, результат число, а дальше его можно интерпретировать вот так

Цитата:
Берёшь целую часть числа, которое у тебя получилось - это кол-во дней
Берёшь то, что после запятой и умножаешь на 24 - это, кол-во часов
Берёшь то, что после запятой и умножаешь на 24*60 - это , кол-во минут
Принцип ясен?
__________________
Sergey Nefedov

Последний раз редактировалось SRF; 16.03.2017 в 12:48.
За это сообщение автора поблагодарили: S.Kuskov (2), sukhanchik (2), Ace of Database (3).
Старый 16.03.2017, 22:17   #8  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Попробуйте посмотреть в сторону Computed Column
http://stackoverflow.com/questions/2...omputed-column
Это работает только с View. Если запрос нужно сделать по таблице, то придется сначала на ее основе сделать View, а уже в нее добавлять Computed Column.
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Range Value --> SQL WHERE Clause Pandasama DAX: Программирование 1 09.07.2016 11:25
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
emeadaxsupport: Where is the System ID number sequence used? Will it run out? Blog bot DAX Blogs 0 25.05.2011 00:11
Dynamics AX Sustained Engineering: Sale Order Batch Invoicing reprints invoices from prior runs, when “Print” is set to ‘After’ on AR >> Periodic >> Sales Update >> Invoice form Blog bot DAX Blogs 0 24.03.2010 02:06
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:43.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.