大于 Axapta 2009 X++ 中的日期
Greater than date in Axapta 2009 X++
我希望编写一个查询,该查询将 select 所有大于 X++ 中特定日期的销售订单。这将是我正在撰写的工作的一部分。
像这样:
SalesTable.createdDateTime > '2016-09-01'
我认为我需要使用 DateTimeUtil::newDateTime
来完成它。我见过这样的例子:
where salesLine.createdDateTime == DateTimeUtil::newDateTime(systemdateget(), 0)
如何在其中输入实际日期?或者我应该使用不同的方法吗? QueryBuilder
也许?
非常感谢,
安娜
根据您的评论(但我如何在代码中使用该实际日期?)要在查询中使用它,您可以使用此代码:
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
:
while(qr.next()){
salesTable = qr.get(tablenum(SalesTable));
}
用AX的查询语法还是用查询对象,全看你的用途了。做一个 date/time 对两者都有用。
这是一个示例作业,它展示了一种更正确的方式来做你想做的事,还展示了时区注意事项。
您可以构建一个 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));
}
我希望编写一个查询,该查询将 select 所有大于 X++ 中特定日期的销售订单。这将是我正在撰写的工作的一部分。
像这样:
SalesTable.createdDateTime > '2016-09-01'
我认为我需要使用 DateTimeUtil::newDateTime
来完成它。我见过这样的例子:
where salesLine.createdDateTime == DateTimeUtil::newDateTime(systemdateget(), 0)
如何在其中输入实际日期?或者我应该使用不同的方法吗? QueryBuilder
也许?
非常感谢,
安娜
根据您的评论(但我如何在代码中使用该实际日期?)要在查询中使用它,您可以使用此代码:
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
:
while(qr.next()){
salesTable = qr.get(tablenum(SalesTable));
}
用AX的查询语法还是用查询对象,全看你的用途了。做一个 date/time 对两者都有用。
这是一个示例作业,它展示了一种更正确的方式来做你想做的事,还展示了时区注意事项。
您可以构建一个 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));
}