在Axapta 2009 X ++中大于日期

时间:2016-10-19 16:27:24

标签: axapta x++ dynamics-ax-2009

我希望编写一个查询,在X ++中选择大于特定日期的所有销售订单。这将是我正在写的工作的一部分。

这样的事情:

SalesTable.createdDateTime > '2016-09-01'

我认为我需要使用DateTimeUtil::newDateTime来执行此操作。我见过这样的例子:

where salesLine.createdDateTime == DateTimeUtil::newDateTime(systemdateget(), 0)

如何在那里放置实际日期?或者我应该使用不同的方法?或许QueryBuilder

非常感谢,

安娜

2 个答案:

答案 0 :(得分:1)

通过您的评论(但如何在代码中使用该实际日期?)在查询中使用此功能,您可以使用此代码:

detach()

按代码运行此查询并获取Query q; QueryRun qr; QueryBuildDataSource qbd; QueryBuildRange qbr; utcDateTime mutcDateTime; date mDate; ; mDate = str2Date("15/09/2016", 123); //15h September mutcDateTime = DateTimeUtil::newDateTime(mDate,0); q = new Query(); qbd = q.addDataSource(TableNum(SalesTable)); qbr = qbd.addRange(FieldNum(SalesTable, CreatedDateTime)); qbr.value(strFmt('>%1', mutcDateTime)); qr = new QueryRun(q);

SalesTable

答案 1 :(得分:1)

使用AX的查询语法或使用查询对象都取决于您的使用。做日期/时间对两者都有用。

这是一个示例作业,它显示了更正确的方法来执行您想要的操作并显示时区注意事项。

您可以构建date个对象或utcDateTime,这更有可能是您需要做的。

static void DateTimeExample(Args _args)
{
    utcDateTime         myDateTime;
    date                myDate;
    TimeOfDay           myTimeOfDay;

    // Set your date
    myDate          = mkDate(1,10, year(today())); // Ex. October 1, 2016

    // Set time of day or just use 0
    myTimeOfDay     = DateTimeUtil::time(DateTimeUtil::utcNow());

    // Build your utcObject
    myDateTime  = DateTimeUtil::newDateTime(myDate, myTimeOfDay);

    // Apply timezone offset
    myDateTime  = DateTimeUtil::applyTimeZoneOffset(myDateTime, DateTimeUtil::getCompanyTimeZone());

    info(strFmt("utcDateTime: %1", myDateTime));
}