Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / TRUNC TIMESTAMP до минут / 25 сообщений из 28, страница 1 из 2
26.02.2019, 13:50
    #39779290
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Всем привет. Подскажите, пожалуйста, как округлить время до минут.

Почему-то
SELECT TO_TIMESTAMP(TRUNC(SYSTIMESTAMP, 'MI'), 'DD.MM.YY HH24:MI:SS,FF') FROM DUAL

Даёт результат
26.02.19 00:00:00,000000000

Хотя я ожидаю
26.02.19 13:48:00,000000000
...
Рейтинг: 0 / 0
26.02.2019, 14:00
    #39779301
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
RoomonTO_TIMESTAMP(TRUNCДату и к строке, и к timestamp-у приводят другими функциями.
...
Рейтинг: 0 / 0
26.02.2019, 14:02
    #39779303
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Elic,
а можно подробнее?)
...
Рейтинг: 0 / 0
26.02.2019, 14:05
    #39779305
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Roomonа можно подробнее?)RTFM, что возвращает TRUNC и что хочет TO_TIMESTAMP. Потом включай мозг.
...
Рейтинг: 0 / 0
26.02.2019, 15:54
    #39779395
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Elic,
не надо грубить. В гугле не нашел, поэтому и написал сюда.

По логике следующий запрос должен округлять до минут, а он округляет до дней.
SELECT TRUNC(SYSTIMESTAMP, 'MI') FROM DUAL

Если функция не та, то прошу подсказать какй функцией можно окргулить до минут.
...
Рейтинг: 0 / 0
26.02.2019, 16:07
    #39779398
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
RoomonElic,
не надо грубить. В гугле не нашел, поэтому и написал сюда.

По логике следующий запрос должен округлять до минут, а он округляет до дней.
SELECT TRUNC(SYSTIMESTAMP, 'MI') FROM DUAL

Если функция не та, то прошу подсказать какй функцией можно окргулить до минут.

Код: plsql
1.
2.
3.
select systimestamp, trunc(systimestamp,'MI') from dual;

26.02.19 16:06:06,019982 +03:00	26.02.2019 16:06:00
...
Рейтинг: 0 / 0
26.02.2019, 16:10
    #39779399
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
MazoHist, спасибо.

У меня в SQL developer вот такой результат:
26.02.19 16:08:34,624120000 +03:00 26.02.19

В чем может быть причина?
...
Рейтинг: 0 / 0
26.02.2019, 16:12
    #39779400
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
RoomonВ гугле не нашелНе там искал. RTFM SQL Language Reference (FAQ)
RoomonЕсли функция не та, то прошу подсказать какй функцией можно окргу лить до минут.
Код: plaintext
RO NU D
Roomonа он округляет до дней.Не он. RTFM TO_CHAR (datetime) + Globalization Support Guide (FAQ)
...
Рейтинг: 0 / 0
26.02.2019, 16:22
    #39779411
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Elic, спасибо. Получилось через to_char.
...
Рейтинг: 0 / 0
26.02.2019, 16:26
    #39779415
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
RoomonПолучилось через to_char.Надеюсь, не "округлить"?
...
Рейтинг: 0 / 0
26.02.2019, 16:30
    #39779419
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Elic, мне не принципиально именно округление. Главное было разбить на минутные интервалы.
...
Рейтинг: 0 / 0
26.02.2019, 19:29
    #39779506
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
RoomonПолучилось через to_char.
Roomonразбить на минутные интервалы.
Рукалицо...
...
Рейтинг: 0 / 0
26.02.2019, 19:44
    #39779509
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
andrey_anonymousРукалицо...
Задача была посмотреть добавление записей в таблицу в разбивке по минутам.
Сделал следующим образом. created_date в формате timestamp изначально
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
    to_char(created_date,'YYYY-MM-DD HH24:MI'),
    count(*)
from
    t
group by
    to_char(created_date,'YYYY-MM-DD HH24:MI')
order by
    to_char(created_date,'YYYY-MM-DD HH24:MI')


Решение для меня вроде бы работает. Если у меня есть ошибка, или можно сделать намного оптимальнее, то буду рад советам.
...
Рейтинг: 0 / 0
26.02.2019, 21:09
    #39779524
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with t(created_date) as (select systimestamp - numtodsinterval(rownum/7,'second') from dual connect by level < 1000
)
select min(created_date) min_dt
     , max(created_date) max_dt
     , trunc(created_date,'MI') trunc_dt
     , count(*) cnt
from t
group by trunc(created_date,'MI')
order by 1
;

MIN_DT                              MAX_DT                              TRUNC_DT                    CNT
----------------------------------- ----------------------------------- -------------------- ----------
26.02.19 21:04:31,862494286 +03:00  26.02.19 21:04:59,862494286 +03:00  26.02.2019 21:04:00         197
26.02.19 21:05:00,005351429 +03:00  26.02.19 21:05:59,862494286 +03:00  26.02.2019 21:05:00         420
26.02.19 21:06:00,005351429 +03:00  26.02.19 21:06:54,433922857 +03:00  26.02.2019 21:06:00         382

SQL> 
...
Рейтинг: 0 / 0
27.02.2019, 09:44
    #39779611
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
andrey_anonymous,
как я уже писал выше у меня trunc(created_date,'MI') выдает дату без времени..
Как это можно исправить?
...
Рейтинг: 0 / 0
27.02.2019, 10:11
    #39779623
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
RoomonКак это можно исправить?Научиться читать и понимать прочитанное.
...
Рейтинг: 0 / 0
27.02.2019, 10:45
    #39779637
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Roomon,

формат "отображения даты по умолчанию" зависит от настроек сессии


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
SQL> alter session set nls_date_format='dd.mm.yyyy';

Session altered.

SQL> select trunc(systimestamp,'mi') t from dual;

T
----------
27.02.2019

SQL> alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> select trunc(systimestamp,'mi') t from dual;

T
-------------------
27.02.2019 09:36:00

SQL> alter session set nls_date_format='FMdd (Day) Month YYYY';

Session altered.

SQL> select trunc(systimestamp,'mi') t from dual;

T
-----------------------------
27 (Середа) Лютий 2019



зи
интересно почему день в маске можна задать дважды, а месяц нет, фича или бага?
ORA-01816: month may only be specified once

....
stax
...
Рейтинг: 0 / 0
27.02.2019, 11:24
    #39779655
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Staxпочему день в маске можна задать дваждыНи день, ни ночь нельзя.
ORA-01810: format code appears twice
ORA-01812: year may only be specified once
ORA-01813: hour may only be specified once
ORA-01816: month may only be specified once
ORA-01817: day of week may only be specified once
ORA-01818: 'HH24' precludes use of meridian indicator
ORA-01819: signed year precludes use of BC/AD
...
Рейтинг: 0 / 0
27.02.2019, 11:55
    #39779683
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
-2-Staxпочему день в маске можна задать дваждыНи день, ни ночь нельзя.
ORA-01810: format code appears twice
ORA-01812: year may only be specified once
ORA-01813: hour may only be specified once
ORA-01816: month may only be specified once
ORA-01817: day of week may only be specified once
ORA-01818: 'HH24' precludes use of meridian indicator
ORA-01819: signed year precludes use of BC/AD

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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> alter session set nls_date_format='FMdd (Day) Month YYYY';

Session altered.

SQL> ed
Wrote file afiedt.buf

  1* alter session set nls_date_format='FMdd (Day) mm(Month) YYYY'
SQL> /
ERROR:
ORA-01816: month may only be specified once


.....
stax
...
Рейтинг: 0 / 0
27.02.2019, 11:59
    #39779693
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Stax, спасибо большое! Первый нормальный ответ на вопрос в шапке =)

-2-, не нужно умничать. Если по делу нечего сказать - лучше промолчать.

Если бы 2-й ответ в теме сразу был:
Код: plsql
1.
alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss'


то тему можно было бы не развивать..
...
Рейтинг: 0 / 0
27.02.2019, 12:09
    #39779704
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Staxдень указал два раза (dd и Day)день недели, месяца, года и юлия это не "два раза".

Roomonне нужно умничатьТак и пиши в следующий раз: просьба отвечать только идиотов.

RoomonЕсли бы 2-й ответ в теме сразу был:
Код: plsql
1.
alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss'

то тему можно было бы не развивать..Сомневаюсь, что ты понял, что это не решение, а демонстрация толики того, что стоит прочитать по ссылкам, данным Elic.
...
Рейтинг: 0 / 0
27.02.2019, 12:36
    #39779725
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
-2-Сомневаюсь, что ты понял, что это не решение, а демонстрация толики того, что стоит прочитать по ссылкам, данным Elic.
Для моей текущей ситуации это - решение. Я не разработчик и не системный аналитик.
По ссылкам от Elic я пробежался, но не увидел там, что для NLS_DATE_FORMAT можно не только дни, месяцы и годы указывать.

Если вам не нравятся вопросы от новичка и вы не готовы помочь, то проходите мимо. Зачем впустую тратить своё время?
...
Рейтинг: 0 / 0
27.02.2019, 12:59
    #39779737
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
Roomonне нравятся вопросы от новичкаПо каким критериям определяешь степень "нравятся"?
Roomonне готовы помочьЭто не платная поддержка с актом сдачи-приемки, чтобы оценивать меру помощи. Не считаю себя лучшим пересказчиком, чем авторы документации, поэтому ограничился советом изучать авторитетные источники.
RoomonЗачем впустую тратить своё время?Заниженная самооценка или ты действительно считаешь, что, отвечая, зря трачу время на дебила?
...
Рейтинг: 0 / 0
27.02.2019, 13:12
    #39779753
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
-2-Заниженная самооценка или ты действительно считаешь, что, отвечая, зря трачу время на дебила?

Уважаемый, к личным оскорблениям переходят, когда нечего сказать по делу. Вы зря потратили своё и моё время на общение в этой теме. Для меня пользы от ваших сообщений - ноль. Думаю, что вы тоже ничего не получили полезного от участия в этой теме.

Не вижу смысла продолжать дискуссию с вами. Хорошего дня!
...
Рейтинг: 0 / 0
27.02.2019, 13:36
    #39779772
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRUNC TIMESTAMP до минут
-2-Не считаю себя лучшим пересказчиком, чем авторы документации


зря (даремно) не считаете себя лучшим пересказчиком

напр в https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00210
авторTS Yes

Returns a value in the short time format. Makes the appearance of the time components (hour, minutes, and so forth) depend on the NLS_TERRITORY and NLS_LANGUAGE initialization parameters.

Restriction: You can specify this format only with the DL or DS element, separated by white space.


гугль переводит как
Ограничение: Вы можете указать этот формат только с элементом DL или DS, разделенным пробелом.

в тоже время
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> alter session set nls_date_format='fmdd month yyyy ts';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------------
27 лютий 2019 12:24:59



да и с "разделенным пробелом" перебор
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> alter session set nls_date_format='dsts';

Session altered.

SQL> select sysdate from dual;

SYSDATE
------------------
27.02.201912:35:06



....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / TRUNC TIMESTAMP до минут / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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