Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов / 11 сообщений из 11, страница 1 из 1
04.10.2017, 11:15
    #39530638
RC88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
Подскажите, пожалуйста, как можно конвертировать секунды в
формат Дни.чч:мм:сс или чч:мм:сс (где более 24 часов, например 56:00:00)

Используя данную конвертацию, время более 24 часов начинает неправильно отображаться, например 194500 секунд отображаются в виде 06:01:40
,CONVERT(time(0), DATEADD(s, DurationS, 0), 114)as [Время в движении]
...
Рейтинг: 0 / 0
04.10.2017, 11:34
    #39530647
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
Код: sql
1.
select d = 194500/(24*60*60), h = 194500%(24*60*60)/(60*60), m = 194500%(60*60)/(60), s = 194500%(60)



строку то сам сляпаешь?
...
Рейтинг: 0 / 0
04.10.2017, 11:39
    #39530652
RC88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
,REPLACE(STR(DurationS/3600)+':'+STR(DurationS%3600/60)+':'+STR(DurationS%60),' ','')

А вот делая таким способом время преобразовывается нормально, но некрасиво, без 0.
Как-нибудь можно преобразовать, чтобы 0 добавлялся?
54:1:40 ->54:01:40
22:40:1 ->22:40:01
22:8:5 - >28:08:05
...
Рейтинг: 0 / 0
04.10.2017, 11:40
    #39530653
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE 
  @d1 DATETIME = DATEADD( HOUR, -56, GETDATE() ),
  @d2 DATETIME = DATEADD( SECOND, 3, GETDATE() )
DECLARE 
  @d3 DATETIME = @d2 - @d1

SELECT
  CONVERT( VARCHAR, DATEDIFF( DAY, '19000101', @d3 ) ) + '.' + SUBSTRING( CONVERT( VARCHAR, @d3, 120 ), 12, 8 )


Я бы так сделал, лишь бы с ведущими нулями не морочиться.
...
Рейтинг: 0 / 0
04.10.2017, 11:42
    #39530654
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
RC88,REPLACE(STR(DurationS/3600)+':'+STR(DurationS%3600/60)+':'+STR(DurationS%60),' ','')

А вот делая таким способом время преобразовывается нормально, но некрасиво, без 0.
Как-нибудь можно преобразовать, чтобы 0 добавлялся?
54:1:40 ->54:01:40
22:40:1 ->22:40:01
22:8:5 - >28:08:05

Код: sql
1.
select right( '0' + cast( 1 as nvarchar(16) ), 2 )
...
Рейтинг: 0 / 0
04.10.2017, 11:49
    #39530660
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
RC88,REPLACE(STR(DurationS/3600)+':'+STR(DurationS%3600/60)+':'+STR(DurationS%60),' ','')

А вот делая таким способом время преобразовывается нормально, но некрасиво, без 0.
Как-нибудь можно преобразовать, чтобы 0 добавлялся?
54:1:40 ->54:01:40
22:40:1 ->22:40:01
22:8:5 - >28:08:05Заменили пробелы на пустую строку, а могли бы на '0'. Вот и были бы лидирующие нули...
Код: sql
1.
,REPLACE(STR(DurationS/3600),' ','')+':'+REPLACE(STR(DurationS%3600/60,2)+':'+STR(DurationS%60,2),' ','0')

Только нули у часов так не получаются, ибо в часах может быть более двух цифр, и в этом случае лидирующий 0 как бы не нужен
...
Рейтинг: 0 / 0
04.10.2017, 12:03
    #39530667
RC88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
iap,

Огромное вам Спасибо!
...
Рейтинг: 0 / 0
07.02.2018, 14:22
    #39598220
RC88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
Добрый день, помогите, пожалуйста.
Столкнулся с проблемой несходимости данных из SQL и MS Excel
При использовании конвертации в [чч]:мм:сс время в SQL получается то на 1 час больше, то на 1 минуту больше, чем переведенное в MS Excel. В чем может быть проблема?
Код: plsql
1.
,REPLACE(STR(([В среднем на одно ТС, Стоянки])/3600),' ','')+':'+REPLACE(STR(([В среднем на одно ТС, Стоянки])%3600/60,2)+':'+STR(([В среднем на одно ТС, Стоянки])%60,2),' ','0') as [В среднем на одно ТС, Стоянки]



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Секунды	Время из SQL	Время по Excel	Расхождение
405805	113:43:25	112:43:25	1:00:00
418423	116:14:43	116:13:43	0:01:00
438387	122:46:27	121:46:27	1:00:00
391377	109:43:57	108:42:57	1:01:00
430548	120:36:48	119:35:48	1:01:00
341321	95:49:41	94:48:41	1:01:00
413392	115:50:52	114:49:52	1:01:00
382539	106:16:39	106:15:39	0:01:00
...
Рейтинг: 0 / 0
07.02.2018, 14:27
    #39598225
RC88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
PS.
Такое происходит, если значение в секундах было дробным.
Если убрать у него дробную часть через cast (/*ячейка*/as dec (12,0)), то все равно время считается с погрешностью в 1 час или 1 минуту
...
Рейтинг: 0 / 0
07.02.2018, 15:31
    #39598280
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
RC88Добрый день, помогите, пожалуйста.
Столкнулся с проблемой несходимости данных из SQL и MS Excel
При использовании конвертации в [чч]:мм:сс время в SQL получается то на 1 час больше, то на 1 минуту больше, чем переведенное в MS Excel. В чем может быть проблема?
Код: plsql
1.
,REPLACE(STR(([В среднем на одно ТС, Стоянки])/3600),' ','')+':'+REPLACE(STR(([В среднем на одно ТС, Стоянки])%3600/60,2)+':'+STR(([В среднем на одно ТС, Стоянки])%60,2),' ','0') as [В среднем на одно ТС, Стоянки]



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Секунды	Время из SQL	Время по Excel	Расхождение
405805	113:43:25	112:43:25	1:00:00
418423	116:14:43	116:13:43	0:01:00
438387	122:46:27	121:46:27	1:00:00
391377	109:43:57	108:42:57	1:01:00
430548	120:36:48	119:35:48	1:01:00
341321	95:49:41	94:48:41	1:01:00
413392	115:50:52	114:49:52	1:01:00
382539	106:16:39	106:15:39	0:01:00



405805/3600 = 112
следовательно, твой говнокод в MS SQL считает неверно.

Причем, заметь, именно говнокод. Ибо MS SQL читает правильно
Код: sql
1.
select h = 405805/(60*60), m = 405805%(60*60)/(60), s = 405805%(60)


Код: plaintext
1.
h	m	s
112	43	25
...
Рейтинг: 0 / 0
07.02.2018, 15:39
    #39598287
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов
RC88PS.
Такое происходит, если значение в секундах было дробным.
Если убрать у него дробную часть через cast (/*ячейка*/as dec (12,0)), то все равно время считается с погрешностью в 1 час или 1 минуту

Код: sql
1.
 cast (/*ячейка*/as bigint) 


И топай учить чем целочисленное деление отличается от деления с десятичной точкой.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конвертация секунд в дни.чч:мм:сс или чч:мм:сс более 24 часов / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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