−97
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
| РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ) КАК РезультатРазность";
Запрос.УстановитьПараметр("Дата1",СтрТЧ.ДатаНачала);
Запрос.УстановитьПараметр("Дата2",СтрТЧ.ДатаОкончания);
Результат = Запрос.Выполнить().Выгрузить();
КолвоМесяцев = Результат[0].РезультатРазность+1;
Классика жанра. Ходим на сервер, чтобы посчитать разность дат. Ну да, сервер же у нас целыми днями воздух гоняет, заняться ему больше нечем. Давайте 2+2 складывать начнем через сервак.
Причем, б*ть, через сервер приложений, который в свою очередь погонит запрос на сервер MSSQL.
Запостил:
mrbus,
08 Июня 2016
что делает эта функция?
считается элементарно:
КолвоМесяцев = Месяц(ДатаОкончания) - Месяц(ДатаНачала) + 12 * (Год(ДатаОкончания) - Год(ДатаНачала))
Не бойся, без хуев на пол экрана
ЗЫ никто "шутки" не уловил. "РАЗНОСДАТЬ" это то как я прочитал "РАЗНОСТЬДАТ".
Вы будете смеятся, но я раз такое в продакшене видел: это был воркараунд для обработки leap year & DST. потому что в приложении (С++) этого не могли сделать.
если на клиенте в принципе нельзя полагаться, что там будет ntp, то время сервера - единственная вещь, с которой можно жить
у нас есть пара систем, где число клиентов тысячами считается
вот все они, к сожалению, при старте и далее регулярно в течение дня спрашивают сервер о реальном времени и ведут свои виртуальные часы (основанные на разнице серверного времени и системного), потому что иначе никак
или ты имеешь в виду, что пользователь вне клиента может переставить системные часы?
может, это повод перезапросить серверное время ещё раз и уточнить новую разницу
Никогда*. Просто надо просить у операционки значение монотонно растущего счётчика, а не время ;) Ну или UTC, но его могут руками облапать.
*изредка, например раз в день, чтобы дрейф часов компенсировать
хитрый какой
когда клиент на js, это всё становится уже не так тривиально
> когда перезапрашивать
когда локальное время внезапно не согласуется с ожиданиями, каким оно всё ещё должно быть с точки зрения клиента
как я уже писал, мне тут повезло, плюс минус несколько секунд никого не обломают - для задач хватает (часы в юзеринтерфейсе, слежение за расписанием работы в минутах), распространение серверного времени через http rest уже навлекает на себя приличную погрешность + таймеры в js сами по себе неточные (особенно, когда таб неактивный)
Это титановый костыль, который через пару месяцев станет несъемным протезом
а ты проверял профайлером, что действительно погонит на sql?
тут нет обращения к таблицам данных
это ты обезьяна