−97
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
| РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ) КАК РезультатРазность";
Запрос.УстановитьПараметр("Дата1",СтрТЧ.ДатаНачала);
Запрос.УстановитьПараметр("Дата2",СтрТЧ.ДатаОкончания);
Результат = Запрос.Выполнить().Выгрузить();
КолвоМесяцев = Результат[0].РезультатРазность+1;
Классика жанра. Ходим на сервер, чтобы посчитать разность дат. Ну да, сервер же у нас целыми днями воздух гоняет, заняться ему больше нечем. Давайте 2+2 складывать начнем через сервак.
Причем, б*ть, через сервер приложений, который в свою очередь погонит запрос на сервер MSSQL.
Запостил: mrbus,
08 Июня 2016
Dummy00001 08.06.2016 19:14 # 0
что делает эта функция?
mrbus 08.06.2016 20:41 # +1
считается элементарно:
КолвоМесяцев = Месяц(ДатаОкончания) - Месяц(ДатаНачала) + 12 * (Год(ДатаОкончания) - Год(ДатаНачала))
bormand 12.06.2016 05:12 # +2
bormand 12.06.2016 05:15 # +2
kegdan 12.06.2016 06:24 # +2
bormand 12.06.2016 06:25 # +3
kegdan 12.06.2016 06:28 # 0
Не бойся, без хуев на пол экрана
Dummy00001 12.06.2016 13:43 # +1
ЗЫ никто "шутки" не уловил. "РАЗНОСДАТЬ" это то как я прочитал "РАЗНОСТЬДАТ".
inkanus-gray 12.06.2016 13:45 # 0
Dummy00001 08.06.2016 19:18 # +4
Вы будете смеятся, но я раз такое в продакшене видел: это был воркараунд для обработки leap year & DST. потому что в приложении (С++) этого не могли сделать.
bormand 12.06.2016 05:16 # +2
Dummy00001 12.06.2016 13:53 # +2
defecate-plusplus 13.06.2016 11:11 # +2
если на клиенте в принципе нельзя полагаться, что там будет ntp, то время сервера - единственная вещь, с которой можно жить
у нас есть пара систем, где число клиентов тысячами считается
вот все они, к сожалению, при старте и далее регулярно в течение дня спрашивают сервер о реальном времени и ведут свои виртуальные часы (основанные на разнице серверного времени и системного), потому что иначе никак
dxd 14.06.2016 13:23 # 0
defecate-plusplus 14.06.2016 14:06 # 0
или ты имеешь в виду, что пользователь вне клиента может переставить системные часы?
может, это повод перезапросить серверное время ещё раз и уточнить новую разницу
dxd 14.06.2016 15:30 # 0
defecate-plusplus 14.06.2016 15:35 # 0
dxd 14.06.2016 15:37 # 0
bormand 14.06.2016 15:40 # 0
Никогда*. Просто надо просить у операционки значение монотонно растущего счётчика, а не время ;) Ну или UTC, но его могут руками облапать.
*изредка, например раз в день, чтобы дрейф часов компенсировать
defecate-plusplus 14.06.2016 16:00 # +1
хитрый какой
когда клиент на js, это всё становится уже не так тривиально
> когда перезапрашивать
когда локальное время внезапно не согласуется с ожиданиями, каким оно всё ещё должно быть с точки зрения клиента
как я уже писал, мне тут повезло, плюс минус несколько секунд никого не обломают - для задач хватает (часы в юзеринтерфейсе, слежение за расписанием работы в минутах), распространение серверного времени через http rest уже навлекает на себя приличную погрешность + таймеры в js сами по себе неточные (особенно, когда таб неактивный)
guest 28.06.2016 13:57 # 0
Это титановый костыль, который через пару месяцев станет несъемным протезом
mrbus 03.07.2016 19:54 # 0
vi00 05.10.2016 12:28 # 0
а ты проверял профайлером, что действительно погонит на sql?
тут нет обращения к таблицам данных
barop 05.10.2016 15:08 # 0
vi00 05.10.2016 18:51 # 0
это ты обезьяна