Неточность в статье "Эффективное использование MSSQL в 1С при помощи ВК 1С++" из комплекта документации:
Цитата:Как видно запрос получился очень простой, но абсолютно бестолковый J . Теперь немного усложним его – сделаем запрос с группировкой неделя. Для этого воспользуемся функцией dow(Дата) которая возвращает номер недели в году, но для операций с датой этого не достаточно, нужно еще использовать преобразование 60*60*24=86400 – число секунд в одном дне. Дело в том, что Фокс работает с датой как и со временем, т.е. Дата-1 отнимет одну секунду от даты и получится что то вроде
’01.01.2000: 23:59:59’ вместо просто ’01.01.2000’
1) Прямая проверка показала что
Jr.Date-1 отнимает "не секунду" от даты а целый день ( Jr.Date это поле типа Date a не DateTime).
---
Или поведение может зависеть от провайдера данных?
Я проверял на этом: OLEDB vfpoledb provider v9
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA...2) Кроме того далее в примере запроса используется неправильное выражение для первой даты недели:
Jr.Date-dow(jr.Date)правильным будет:
Jr.Date-dow(jr.Date)+1ЗЫ
1) Выражение для первой даты квартала можно сделать проще:
вместо
Цитата:CAST(
| STR(
| IIF(MONTH(jr.date)<4, '01',
| IIF(MONTH(jr.date)<7, '04',
| IIF(MONTH(jr.date)<10, '07',10
| )
| )
| )
| )+’.01.’+STR(YEAR(jr.date))
можно написать просто:
date(year(jr.date),3*quarter(jr.date)-2,1)2) Можно еще добавить группировку по периоду Декада.
Первая дата декады будет:
day(jr.date)/10)-1)+1))