Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Изменение формата времени
 
 автор: M.B.   (10.05.2007 в 10:52)   личное сообщение
 
 

Помогите пож. ну очень уж нужно.
Требуется в запросе данные одного поля в длинном формате времени перевести в другое поле, но в виде минут с округлением секунд.
Например чтобы 01:02:07 выглядело 63
Заранее благодарен.

  Ответить  
 
 автор: Explorer   (10.05.2007 в 11:15)   личное сообщение
 
 

что значит "округление" секунд? по какму принципу округлять 30 секунд


SELECT FORMAT("01:01:03","hh:nn:ss") AS sTime, DATEDIFF("n",FORMAT("00:00:00","hh:nn:ss"),[sTime]) AS sPeriod

  Ответить  
 
 автор: M.B.   (10.05.2007 в 11:30)   личное сообщение
 
 

Округлять так: если есть хоть одна секунда, то прибовляется одна минута и в итоге выводится количество минут

  Ответить  
 
 автор: Explorer   (10.05.2007 в 11:49)   личное сообщение
 
 

ничего себе округлил :)))

прибавляй к любому исходному времени 59 секунд, далее как описано ниже DATEDIFF к нулю

  Ответить  
 
 автор: osmor   (10.05.2007 в 11:15)   личное сообщение
 
 

как вариант

hour("01:02:07")*60+minute("01:02:07")+iif(Second("01:02:07") >0,1,0)

  Ответить  
 
 автор: Explorer   (10.05.2007 в 11:24)   личное сообщение
 
 

можно секунды делить на 30, брать целую часть и прибавлять к общим минутам


SELECT FORMAT("01:01:31","hh:nn:ss") AS sTime, DATEDIFF("n",Format("00:00:00","hh:nn:ss"),[sTime])+INT(FORMAT([sTime],"ss")/30) AS sPeriod

  Ответить  
 
 автор: M.B.   (10.05.2007 в 12:43)   личное сообщение
 
 

Все работает, но не так как надо.
Требуется чтобы секунды не обнулялись, например 00:02:00 равнялось 2, а 00:02:01 равнялось 3

  Ответить  
 
 автор: Explorer   (10.05.2007 в 12:49)   личное сообщение
 
 

прибавляй к исходному времени 59 секунд и бери DATEDIFF от 00:00:00

в принципе значение с нулем секунд может быть не часто (один к шестидесяти), поэтому можешь просто прибавлять заранее одну минуту

  Ответить  
 
 автор: M.B.   (10.05.2007 в 13:28)   личное сообщение
 
 

Это требуется для тарификации разговоров, поэтому всё критично и требует абсолютной точности с этими округлениями.
А можно задать условие? если "ss"=0 то неокругляя выводит минуты, а если "ss">0 то SELECT FORMAT([Кол-во],"hh:nn:ss") AS sTime, DATEDIFF("n",Format("00:00:00","hh:nn:ss"),[sTime])+FORMAT([sTime],"ss") / FORMAT([sTime],"ss") AS sPeriod
а то этот код в случае "ss"=0 пишет ошибку

  Ответить  
 
 автор: Explorer   (10.05.2007 в 13:59)   личное сообщение
 
 

>а то этот код в случае "ss"=0 пишет ошибку

это наверное системная ошибка попытка деления на букву "о"

вы вообще неправильно вопрос ставите - вам ничего не нужно округлять... время отсчитывается с "00" секунд - поэтому просто прибавляйте 1 минуту и отрезайте секунды вообще

  Ответить  
 
 автор: osmor   (10.05.2007 в 14:30)   личное сообщение
 
 


Это требуется для тарификации разговоров, поэтому всё критично и требует абсолютной точности с этими округлениями

Тогда Вы идете не тем путем. Нудно хранить секунды в формате целое (или длинное целое)
и преобразовывать как надо.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList