powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Округление TimeStamp
6 сообщений из 6, страница 1 из 1
Округление TimeStamp
    #39011705
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пож-та, как округлить время с точностью до часов.
Именно округлить, не отбросить, т.е. и 26.04.2015 08:59:59 и 26.04.2015 09:05:02
должно округляться до 26.04.2015 09:00:00
Спасибо!
...
Рейтинг: 0 / 0
Округление TimeStamp
    #39011711
kaktus1983,

что-то типа этого ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with
d as (
    select timestamp '30.04.2015 23:30:00' dts from rdb$database union all
    select timestamp '30.04.2015 23:30:01' dts from rdb$database union all
    select timestamp '01.05.2015 00:29:59' dts from rdb$database union all
    select timestamp '01.05.2015 00:30:00' dts from rdb$database union all
    select timestamp '01.05.2015 00:30:01' dts from rdb$database union all
    select timestamp '26.04.2015 08:59:59' dts from rdb$database union all
    select timestamp '26.04.2015 09:05:02' from rdb$database
)
,e as(
    select dts, extract(minute from dts) *60 + extract(second from dts) ss
    from d
)
select dts, dateadd(iif(ss >= 1801, 3600-ss, -ss) second to dts)
from e;
...
Рейтинг: 0 / 0
Округление TimeStamp
    #39011732
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ованес Сусанян,
Да, большое спасибо!
...
Рейтинг: 0 / 0
Округление TimeStamp
    #39012505
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не проще сначала добавлять 30 минут, а потом таки отбрасывать???
...
Рейтинг: 0 / 0
Округление TimeStamp
    #39012583
shaposh,

если я правильно понял эту мысль, то - примерно то же самое будет :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with
d as (
    select timestamp '30.04.2015 23:30:00' dts from rdb$database union all
    select timestamp '30.04.2015 23:30:01' dts from rdb$database union all
    select timestamp '01.05.2015 00:29:59' dts from rdb$database union all
    select timestamp '01.05.2015 00:30:00' dts from rdb$database union all
    select timestamp '01.05.2015 00:30:01' dts from rdb$database union all
    select timestamp '26.04.2015 08:59:59' dts from rdb$database union all
    select timestamp '26.04.2015 09:05:02' from rdb$database
)
,e as(
    select dts, dateadd(-extract(second from dts) second to dateadd(30 minute to dts)) dts2
    from d
)
select dts,dateadd(-extract(minute from dts2) minute to dts2)
from e;
...
Рейтинг: 0 / 0
Округление TimeStamp
    #39012616
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так надо было, чтобы избавиться от случайных миллисекунд. Да и от лишней СТЕ тоже:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with
d as (
    select timestamp '30.04.2015 23:30:00.007' dts from rdb$database union all
    select timestamp '30.04.2015 23:30:01.019' dts from rdb$database union all
    select timestamp '01.05.2015 00:29:59.999' dts from rdb$database union all
    select timestamp '01.05.2015 00:30:00.000' dts from rdb$database union all
    select timestamp '01.05.2015 00:30:01.123' dts from rdb$database union all
    select timestamp '26.04.2015 08:59:59.456' dts from rdb$database union all
    select timestamp '26.04.2015 09:05:02.222' from rdb$database
)
select dts, dateadd(-extract(millisecond from dateadd(1800000 millisecond to dts)) millisecond to dateadd(1800000 millisecond to dts))
from d

ЗЫ. 2shaposh - спс за наводку, мне иногда тоже было нужно. Возьму на вооружение )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Округление TimeStamp
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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