Цитата:
Сообщение от
AndyD
В RU7 срабатывает так
X++:
while select tmpShtrihMTable
where tmpShtrihMTable.TransDateTime != datetobeginUtcDateTime(_transDate, DateTimeUtil::getUserPreferredTimeZone())
order by TransDateTime
{
По-моему, это неверно. Эти два выражения отнюдь не тождественны:
X++:
DateTimeUtil::date(tmpShtrihMTable.TransDateTime) != _transDate
и
X++:
tmpShtrihMTable.TransDateTime != datetobeginUtcDateTime(_transDate, DateTimeUtil::getUserPreferredTimeZone())
Первое выражение будет ложно для интервала в сутки, второе - для интервала в одну секунду.
Цитата:
Сообщение от
Eldar9x
Вобщем, нужен аналог следующей конструкции:
X++:
while select tmpShtrihMTable
order by TransDateTime
{
if (DateTimeUtil::date(tmpShtrihMTable.TransDateTime) != _transDate) // _transDate нужная дата
continue;
В поля типа UtcDateTime пишется дата-время по Гринвичу; по Гринвичу 2 ночи и 10 вечера одного дня - это одна и та же дата, в то время как, скажем, для Москвы эти же временные отметки будут относиться к разным датам, поэтому нужно определиться с тем, в какой временной зоне будет считаться TransDate. После того, как это станет ясно, можно будет фильтровать данные примерно так:
X++:
Timezone tz = // ...
while select tmpShtrihMTable
where tmpShtrihMTable.TransDateTime >= datetobeginUtcDateTime(_transDate, tz)
&& tmpShtrihMTable.TransDateTime <= datetoendUtcDateTime(_transDate, tz)