powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / вычисление разности между датами
25 сообщений из 25, страница 1 из 1
вычисление разности между датами
    #35139790
Daha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СКажите, пожалуйста, существует ли функция, вычисляющая разность между датами? и какая?:)
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35139814
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docs.intersystems.com/cache20071/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_datediff
или
Код: plaintext
$SYSTEM.SQL.DATEDIFF(datepart,startdate,enddate)
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35140472
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если имеется в виду не SQL, а COS, то можно пользоваься арифметическим оператором:

w date1-date2
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35143901
Daha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня в COS, но если просто d1-d2, то вчисляется только разность между днями, а мне нужно еще и время. Как это можно организовать?:)
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35144467
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут без колдовства и заклинаний никак не обойтись.

В сутках 24 часа, в часе 60 минут, в минуте 60 секунд. Стало быть

s h=$h,d=$p(h,",",1),t=$p(h,",",2)

И величина d*24*60*60+t будет временем и датой в секундах. Вычислите это выражение для двух дат и сравните.
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35144497
Daha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:) интересное решение, но неужели это единственный возможный вариант?
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35144671
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что же вас не устраивает в этом варианте?
Если разницу нужно вычислять часто, то можно написать функцию, делов то.
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35145572
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Daha :

А чем Вас вариант с $SYSTEM.SQL.DATEDIFF не устраивает?
Код: plaintext
1.
2.
3.
4.
>set Date1=$ZDTH("02/20/2008 12:00:00")
>set Date2=$ZDTH("02/21/2008 12:01:13")
>w $SYSTEM.SQL.DATEDIFF("ss",Date1,Date2)
 86473 
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35146080
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, исходные данные в виде 61047,31215
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35146086
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык они в приведенном примере именно в таком формате

=logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35146250
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для "повременной" разницы используем вот такую функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Time(Tim1,Tim2) ; Сколько прошло секунд с $H1 по $H2 
 N dt1,dt2,tm1,tm2,tim
 S Tim2=$G(Tim2,$H)
 S dt1=$P(Tim1,",")
 S dt2=$P(Tim2,",")
 S tm1=$P(Tim1,",", 2 )
 S tm2=$P(Tim2,",", 2 )
 S tim= 86400 *(dt2-dt1)+tm2-tm1
 Q tim
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35146921
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Krvsa, для реального мампсера слишком много буков...
Код: plaintext
1.
2.
Time(Tim1,Tim2) ; Сколько прошло секунд с $H1 по $H2
 S Tim2=$G(Tim2,$H)
 Q  86400 *(Tim2-Tim1)+$P(Tim2,",", 2 )-$P(Tim1,",", 2 )
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35147410
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hampster-Mumpster , я боролся за такое написание всю свою жизнь. Код должен быть читабельным и максимально простым...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35147677
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый krvsa, создавая 5 никому не нужных переменных и выполняя 2 избыточных преобразования данных, можно ли говорить о лучшей читабельности кода?
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35147728
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой смысл писать свои функции, если можно использовать готовые, которые поставляются с Cache'.
Вариант $SYSTEM.SQL.DATEDIFF самый правильный, по-моему.
В $SYSTEM.SQL , кстати, еще много полезных готовых функций.


Вадим
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35147800
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hampster-Mumpsterможно ли говорить о лучшей читабельности кода?
Можно говорить о чем угодно. Понятие "читабельность" у каждого своя...
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35147806
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimFКакой смысл писать свои функции
Они писаны давным давно... Мы их просто применяем...
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148030
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О стиле спорить действительно не стоит, а вот о правильности самой формулы... Как насчет перевода часов на летнее время и обратно? Чтобы действительно мерить интервалы времени, надо либо использовать UTC ($zts), либо преобразовывать в UTC перед вычислением ($zutil(193,...)).
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148046
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hampster-MumpsterКак насчет перевода часов на летнее время и обратно?
В этой функции это не учитывается... Но и задачи такой перед нами не ставилось.

Интересно... А эта
Код: plaintext
$SYSTEM.SQL.DATEDIFF("ss",Date1,Date2)
учитывает перевод часов?
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148057
М_а_й_к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VadimFКакой смысл писать свои функции, если можно использовать готовые, которые поставляются с Cache'.
Вариант $SYSTEM.SQL.DATEDIFF самый правильный, по-моему.
В $SYSTEM.SQL , кстати, еще много полезных готовых функций.


Вадим
В уточнении автором было сказано что нужно найти разницу не только дней, но и времени.

Т.е. между датой D1 и D2 прошло: 2 дня 6 часов 37 минут 52 секунды.

Такая готовая функция имеется?
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148072
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М_а_й_кТакая готовая функция имеется?
Возьми любой из трех последних вариантов (там результат секунды) и получи все, что тебе нужно...
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148103
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нам пока хватало "до часов"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Time(Sec,Type) ; Сколько прошло времени
 ; Type= 1  : ЧЧ:ММ
 ; Type= 2  : ММ:СС
 ; Type= 3  : ЧЧ:ММ:СС
 ; Sec=$H или число секунд
 N hour,min,sec
 S Sec=$G(Sec,$H)
 s Type=$G(Type, 1 )
 S:Sec["," Sec=$P(Sec,",", 2 )
 S hour=$TR($J(Sec\ 3600 , 2 )," ", 0 )
 S min=$TR($J(Sec# 3600 \ 60 , 2 )," ", 0 )
 S sec=$TR($J(Sec# 60 , 2 )," ", 0 )
 Q:Type= 1  hour_":"_min
 Q:Type= 2  min_":"_sec
 Q hour_":"_min_":"_sec
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148120
М_а_й_к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa М_а_й_кТакая готовая функция имеется?
Возьми любой из трех последних вариантов (там результат секунды) и получи все, что тебе нужно...

Это я и так понял :)

Речь идет о готовой стандартной, да еще и без SQL,
версия Cache кстати еще 4.1.6
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35148146
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М_а_й_к VadimFКакой смысл писать свои функции, если можно использовать готовые, которые поставляются с Cache'.
Вариант $SYSTEM.SQL.DATEDIFF самый правильный, по-моему.
В $SYSTEM.SQL , кстати, еще много полезных готовых функций.


Вадим
В уточнении автором было сказано что нужно найти разницу не только дней, но и времени.

Т.е. между датой D1 и D2 прошло: 2 дня 6 часов 37 минут 52 секунды.

Такая готовая функция имеется?

Почитайте описание TIMESTAMPDIFF и DATEDIFF
...
Рейтинг: 0 / 0
вычисление разности между датами
    #35149724
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimF , так учитывается ли переход на летнее/зимнее время при использовании
Код: plaintext
$SYSTEM.SQL.DATEDIFF("ss",Date1,Date2)
вопрос так и остается без ответа...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / вычисление разности между датами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]