powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразовать число в дату и сравнить
11 сообщений из 11, страница 1 из 1
Преобразовать число в дату и сравнить
    #40060372
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Дата в поле хранится в числовом виде
например 1617792996792
Это как я поняла 07.04.2021 с часами минутами секундами миллисекундами

Как это представление непонятное числовое представление привести в
1) отображение в формате дд.мм.гггг чч.мм.сс
2) сравнить числовое представление даты (предварительно преобразованное в дату) со строкой вида '01.04.2021 10:00:00' и вывести результат Т.е. грубо говоря отфильтровать записи, например, больше указанной пользователем даты '01.04.2021 10:00:00'
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060381
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семенова

1) отображение в формате дд.мм.гггг чч.мм.сс

Код: plsql
1.
select date '1970-01-01' + 1617792996792/1000/60/60/24 from dual;


Далее работаешь уже с датой, сравниваешь, фильтруешь или что там еще.
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060398
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|
Ольга Семенова

1) отображение в формате дд.мм.гггг чч.мм.сс

Код: plsql
1.
select date '1970-01-01' + 1617792996792/1000/60/60/24 from dual;


Далее работаешь уже с датой, сравниваешь, фильтруешь или что там еще.


а дата 1970-01-01 это получается дата отсчета которая применяется по умолчанию ?
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060414
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__| , при добавлении условия получаю ошибку

Код: plsql
1.
2.
3.
4.
SELECT
TO_CHAR(DATE '1970-01-01' + TAB.LAST_UPDATED_DATE/1000/60/60/24, 'DD.MM.YYYY HH:MM:SS') LAST_UPDATED_DATE
FROM MY_TABLE TAB
Where (DATE '1970-01-01' + TAB.LAST_UPDATED_DATE/1000/60/60/24, 'DD.MM.YYYY')>TO_DATE('01.04.2021', 'DD.MM.YYYY')




ORA-01796: этот оператор не может использоваться в списках
01796. 00000 - "this operator cannot be used with lists"
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060428
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошиблась ))). Поправила условие и заработало
Код: plsql
1.
Where (DATE '1970-01-01' + TAB.LAST_UPDATED_DATE/1000/60/60/24)>TO_DATE('01.04.2021', 'DD.MM.YYYY')



остается только этот вопрос:
автора дата 1970-01-01 это получается дата отсчета которая применяется по умолчанию ?
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060438
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семенова,

Код: plsql
1.
2.
...
Where (DATE '1970-01-01' + TAB.LAST_UPDATED_DATE/1000/60/60/24)>TO_DATE('01.04.2021', 'DD.MM.YYYY')



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

приближенно к
https://ru.wikipedia.org/wiki/Unix-время
Код: plaintext
1.
2.
Unix-время (англ. Unix time, также POSIX-время) — система описания моментов во времени, принятая в Unix и других POSIX-совместимых операционных системах. Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг); этот момент называют «эпохой Unix» (англ. Unix Epoch).
...
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060442
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семенова,

date'1970-01-01' это unix_time - привет вам ( поищите литературу) от последней трети прошлого века

Код: plsql
1.
2.
select date'1970-01-01'
 +numtodsinterval(1617792996.792,'SECOND') as unix_time from dual;
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060487
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делала изменения в 18:06 по МСК. Они сразу обновляются в поле LAST_UPDATED_DATE
но запрос вида

Код: plsql
1.
2.
3.
SELECT
TO_CHAR(DATE '1970-01-01' + LAST_UPDATED_DATE/1000/60/60/24, 'DD.MM.YYYY HH:MM:SS') LAST_UPDATED_DATE
FROM MY_TABLE 



выдает 07.04.21 03:04:39
странное время !!! Подскажите, как его в нормальное привести?
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060489
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семенова
делала изменения в 18:06 по МСК. Они сразу обновляются в поле LAST_UPDATED_DATE

смотрите код обновляльщика (напр в триггере)

у Вас свое корпоративное время (шо архитектор напридумал)

.....
stax
...
Рейтинг: 0 / 0
Преобразовать число в дату и сравнить
    #40060502
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax ,

Помогло так
'DD.MM.YYYY HH24:MI:SS'
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразовать число в дату и сравнить
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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