|
11.02.2010, 11:29 | #1 |
Участник
|
Дата и время в Axapta
Возможно кому-нибудь пригодится данная конструкция.
Стояла следующая проблема: Т.к. Axapta не умеет хранить в одном поле дату и время (например 11.11.2009 22:02:33), принято хранить эту информацию в двух отдельных полях (типы полей Date и Int). Это затрудняет поиск данных по периоду. Я решил данную проблему следующим образом (пример для Oracle): TO_DATE(TO_CHAR(T.DATE + (T.TIME/86400), 'DD.MM.YYYY HH24:MI:SS'), 'DD.MM.YYYY HH24:MI:SS') BETWEEN TO_DATE(TO_CHAR(TO_DATE('01.01.2010', 'DD.MM.YYYY') + (60692/86400), 'DD.MM.YYYY HH24:MI:SS'), 'DD.MM.YYYY HH24:MI:SS') AND TO_DATE(TO_CHAR(TO_DATE('22.02.2010', 'DD.MM.YYYY') + (43200/86400), 'DD.MM.YYYY HH24:MI:SS'), 'DD.MM.YYYY HH24:MI:SS') |
|
11.02.2010, 11:58 | #2 |
Участник
|
Цитата:
Это справедливо только для более старых версий АХ, до появления типа utcDateTime |
|
11.02.2010, 12:10 | #3 |
Участник
|
Работаю на 4-ке, данного типа данных utcDateTime у меня нет
|
|
11.02.2010, 12:19 | #4 |
Участник
|
Это потому что АХ 4 - старая версия
Данный тип был добавлен в АХ 2009 |
|
11.02.2010, 12:25 | #5 |
Участник
|
В AX 2009 как я понимаю данный тип поля уже является стандартным? Т.е. его можно применить для редактирования т.п.
http://www.axaptapedia.com/UtcDateTime |
|
12.02.2010, 11:16 | #6 |
Участник
|
Цитата:
Сообщение от nix0root
В AX 2009 как я понимаю данный тип поля уже является стандартным? Т.е. его можно применить для редактирования т.п.
http://www.axaptapedia.com/UtcDateTime |
|
11.02.2010, 12:17 | #7 |
NavAx
|
Есть.
К примеру, таблица SysClientSessions. Поле Login_date там именно такого типа, хотя нигде увидеть это из Аксапты невозможно - только из SQL Studio. Т.е. там не только дата входа хранится, но и время заодно, ибо SQL тип - DateTime. Из-за этого, кстати, запросы типа select clientSessions where clientSessions.Login_date < systemdateget()) могут возвращать немного не то, что хотелось бы. И в Global:: есть функция для работы с такими convertUTCDateToLocalDate, а вот обратной, кстати, нет, что приводит к проблемам с такими запросами. Если интересно - можно еще посмотреть по ссылкам, где эта функция используется. Но вот самому такое поле, думаю, заполнить не выйдет - это поле заполняется самим ядром.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 11.02.2010 в 12:20. |
|
12.02.2010, 15:27 | #8 |
Участник
|
2009 поддерживает ORACLE http://www.microsoft.com/dynamics/en...ents-2009.aspx
|
|
|
За это сообщение автора поблагодарили: nix0root (1). |
12.02.2010, 15:52 | #9 |
Участник
|
Про переход и затраты понятно, но вот про возможности.. Пока из своего опыта 2009 намного стабильнее, полноценные 64 бита и т.п., в части функциональности много нового и интересного, в т.ч. локализаторы стараются.
В т.ч. дата и время не просто новый тип, он активно участвует в расчетах сроков поставки и проч., есть настройки часовых поясов пользователя.
__________________
Ivanhoe as is.. |
|
12.02.2010, 15:57 | #10 |
Участник
|
А с какой базой вы работаете если не секрет, и чем пользуетесь для отчетов?
|
|
17.02.2010, 14:51 | #11 |
Участник
|
На самом деле с фильтрацией все плохо .
Есть дата 08.02.2010 12:00:00. Фильтруем из формы (CTRL+F, либо правой мышкой), указывая дату - запись отображается. Открываем расширенный фильтр и видим, что, например, 08.02.2010 превратилось в "08.02.2010 00:00:00" и если мы сразу нажмем ОК, то фильтр уже сработает с условием и по времени, в итоге запись пропадет (а ведь мы ничего не поменял в фильтре)!!! Это очень неинтуитивно. Ну и еще - в расширенном фильтре по такому полю нельзя выбрать дату из календаря. MS потихоньку отказывается от расширенного фильтра?? ) Мне кажется правильнее было бы тогда уж использовать новый подход AX 2009 с ключевыми словами в критериях. Например, при фильтрации из формы чтобы критерий автоматически подставлялся как AnyTime(08.02.2010), а уже внутри скрытно для пользователя расшифровывался как "08.02.2010 00:00:00 .. 08.02.2010 23:59:59".
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: kashperuk (3). |
17.02.2010, 15:34 | #12 |
Участник
|
Ну, не так уж и плохо, потому что она работает для большинства сценариев.
Просто нужно менять подход разработки уже сейчас, избегая использования отдельно Даты и Времени. Функциональность выбора даты и времени в расширенном фильтре, возможно, будет добавлена в АХ6. Но пока окончательного решения не принято. Но баг в системе такой уже создан. |
|
30.09.2010, 15:40 | #13 |
Участник
|
Привычка дело наживное. Привыкли же все месяц вводить как 01.10.2010..31.10.2010, а не 01.10.2010..01.11.2010, чем время хуже!
|
|
30.09.2010, 15:54 | #14 |
Ищущий знания...
|
Ещё добавлю, вопрос как раз в указании времени, а не в указании дат, с периодом дат все нормально
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
30.09.2010, 16:05 | #15 |
Участник
|
Можно попытаться отличить случай, когда пользователь вообще не вводил время потому,что оно ему не важно, и время осталось нулевым, от случая, когда пользователь намеренно ввёл 00:00.
Тип time может принимать значение -1, которое визуально отображается как "??????". Он принимает это значение при ошибке ввода. Можно использовать это значение в качестве начального, что бы потом определить корректировал его пользователь или нет. Или вообще для ввода времени использовать текстовое поле с проверками. Тогда значение "00:00" можно считать настоящим нулём, а пустую строку - концом суток P.S.: А можно даже свой тип сделать и лукап к нему для ввода времени Последний раз редактировалось S.Kuskov; 30.09.2010 в 16:14. |
|
Теги |
ax2009, ax4.0, utcdatetime, время, дата |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|