powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывести секунды в дни часы минуты секунды
16 сообщений из 16, страница 1 из 1
Вывести секунды в дни часы минуты секунды
    #39962450
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такое
Код: sql
1.
2.
3.
4.
SELECT

  CAST(SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5) AS TIME) AS d,
       SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5)     AS f


выводит
Код: plaintext
30.05:05:00	30.05:05:00

это правильно(есть ограничение до 34 дней)

делаем так
Код: sql
1.
2.
3.
4.
5.
6.
SELECT

  CAST(SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5) AS TIME) AS d,
       SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5)     AS f
  UNION ALL
  SELECT 1,1



выводит
Код: plaintext
1.
725:05:00	725:05:00
    1          	     1

почему так и как исправить?
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962484
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
  CAST(SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5) AS TIME) AS d,
       SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5)     AS f
    UNION ALL
SELECT 
  CAST(1 AS TIME) AS d, CAST(1 AS TIME) AS f
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962492
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор вадяесть такое
SELECT

CAST(SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5) AS TIME) AS d,
SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5) AS f

выводит
30.05:05:00 30.05:05:00
у меня выводит
725:05:00 725:05:00
10.5.2-MariaDB HeidiSQL

а что ты хотел увидеть когда сам впендюрил в TIME 725 часов?
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962497
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
  CAST(SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5) AS TIME) AS d,
       SEC_TO_TIME(60 * 60 * 24 * 30 + 60 * 5 + 60 * 60 * 5)     AS f
    UNION ALL
SELECT 
  CAST(1 AS TIME) AS d, CAST(1 AS TIME) AS f

тут дело в том, что union взято для показа проблемы.
в реальности там varchar, которые не время...
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962499
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
у меня выводит
725:05:00 725:05:00
10.5.2-MariaDB HeidiSQL
ваще странно
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962500
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что странно
часы-минуты-секунды из секунд

Код: sql
1.
2.
select SEC_TO_TIME(33 + 60 * 5 + 60 * 60 * 5) AS tm
-- 05:05:33
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962501
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
mysql 8.0.19
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962507
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Код: sql
1.
2.
3.
4.
5.
6.
select SEC_TO_TIME(33 + 60 * 5 + 60*60 * 60 * 5) AS tm
/* MySQL 8.0.20 */
--HeidiSQL  300:05:33
--Devart  
--00:11:05
-- 12.12:05:33
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962516
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Код: sql
1.
2.
3.
select SEC_TO_TIME(33 + 60 * 5 + 60*60 * 60 * 5) AS tm
union all
select 1

?
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962520
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
  @tt := 51 * 85400 + 7 * 3600 + 5 * 60 + 15,
  CONCAT_WS(':', 
  TRUNCATE(@tt / 85400, 0),
  TRUNCATE((@tt % 85400 / 3600), 0),
  TRUNCATE((@tt % 85400 % 3600 / 60), 0),
  @tt % 85400 % 3600 % 60
  )  AS xx


что-то проще есть?
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962625
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
почему так и как исправить?

Какие-то неявные преобразования. Делай явно через TIME_FORMAT
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962626
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962644
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты что
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET @tt := 30 * 86400 + 7 * 3600 + 5 * 60 + 15;
SELECT
  TIME_FORMAT(SEC_TO_TIME(@tt), '%d %H %i %s')
UNION ALL
SELECT
  CONCAT_WS(':',
  TRUNCATE(@tt / 86400, 0),
  TRUNCATE((@tt % 86400 / 3600), 0),
  TRUNCATE((@tt % 86400 % 3600 / 60), 0),
  @tt % 86400 % 3600 % 60
  ) AS xx


Код: plaintext
1.
00 727 05 15
30:7:5:15
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962682
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SET @tt := 30 * 86400 + 7 * 3600 + 5 * 60 + 15;
SELECT date_format(date_sub(from_unixtime(@tt), interval '1 1' day_hour), '%j:%H:%i:%s') as xx
UNION ALL
SELECT
  CONCAT_WS(':',
  TRUNCATE(@tt / 86400, 0),
  TRUNCATE((@tt % 86400 / 3600), 0),
  TRUNCATE((@tt % 86400 % 3600 / 60), 0),
  @tt % 86400 % 3600 % 60
  ) AS xx


https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=4fd61e5779ba7cd6a511d651c4984207

Но сломается на интервале больше года, так что сделать функцию таки лучше.
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962689
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
FUNCTION days(d_end timestamp, d_begin timestamp)
  RETURNS VARCHAR(20) CHARSET utf8mb4
  DETERMINISTIC
BEGIN
  SET @tt = UNIX_TIMESTAMP(d_end) - UNIX_TIMESTAMP(d_begin);

  SET @d = TRUNCATE(@tt / 86400, 0);
  SET @h = TRUNCATE((@tt % 86400 / 3600), 0);
  RETURN
  CONCAT(
  IF(@d = 0, '', @d), IF(@d = 0, '', 'd '),
  IF(@h = 0, '', @h), IF(@h = 0, '', 'h '),
  TRUNCATE((@tt % 86400 % 3600 / 60), 0), 'm '
  --   ,(@tt % 86400 % 3600 % 60), 's'
  )
  ;



crutchmaster
так что сделать функцию таки лучше.

да уж
...
Рейтинг: 0 / 0
Вывести секунды в дни часы минуты секунды
    #39962697
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Alex_Ustinov,

Код: sql
1.
2.
3.
select SEC_TO_TIME(33 + 60 * 5 + 60*60 * 60 * 5) AS tm
union all
select 1

?

Проверяй в консоли чистый вывод, я же показал что вывод у GUI разный, MySQL отдает всегда одинаково
когда нибудь наткнешься на грабли
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывести секунды в дни часы минуты секунды
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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