powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дата
17 сообщений из 17, страница 1 из 1
Дата
    #39699135
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, как вывести даты за текущий год, три предыдущих и два последующих по григорианскому календарю?

SELECT TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1
FROM dual
connect by rownum <= (TRUNC(ADD_MONTHS(SYSDATE,+36),'YY')+rownum-1) -(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)

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

можно раскрыть скобки в правой части неравенства и чутку скоротить

ps
Вам надо даты по юлинианскому(православному)?
....
stax
...
Рейтинг: 0 / 0
Дата
    #39699169
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
да, теперь нужно переписать для григорианского
...
Рейтинг: 0 / 0
Дата
    #39699175
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
да по юлианскому, извините , я немного вас запутала
...
Рейтинг: 0 / 0
Дата
    #39699183
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
with dt(dt_from, dt_till) as (select add_months(trunc(sysdate,'yyyy'),-36), add_months(trunc(sysdate,'yyyy'),+36) from dual)
select to_char(dt_from+level-1,'dd.mm.yyyy',q'{NLS_CALENDAR='GREGORIAN'}' ) Gregorian_dt
     , to_char(dt_from+level-1,'dd.mm.yyyy',q'{NLS_CALENDAR='Thai Buddha'}' ) Thai_dt
     , to_char(dt_from+level-1,'dd.mm.yyyy',q'{NLS_CALENDAR='Persian'}' ) Persian_dt
from dt
connect by level <= dt_till-dt_from
...
Рейтинг: 0 / 0
Дата
    #39699189
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, Спасибо!
...
Рейтинг: 0 / 0
Дата
    #39699194
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maska321Stax,
да по юлианскому, извините , я немного вас запутала

авторЮлиа́нская да́та (JD) — астрономический способ измерения времени, при котором считается число суток, прошедших начиная с полудня понедельника, 1 января 4713 до н. э. юлианского календаря или, что то же самое, 24 ноября 4714 г. до н. э. григорианского календаря (соответственно, −4712 г. и −4713 г. по астрономическому счёту лет[1]). Первый день имел номер 0. С тех пор по настоящее время прошло немногим менее 2,5 миллиона дней. Даты сменяются в полдень UT или TT. Для точного обозначения времени применяют дробную часть, например, JD = 2451545,25 соответствует 18 часам 1 января 2000 года; 3 часа дня 2 августа 1942 года — JD 2430574,125; 13,5 июня 1944 года — JD 2431255,0.

Текущий юлианский день JD=2458365.332431

Код: plsql
1.
2.
3.
4.
5.
6.
SQL> select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss') g,to_char(sysdate,'J') j from dual
  2  /

G                   J
------------------- -------
06.09.2018 17:12:03 2458368


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  1  with t(d) as (
  2  select to_date('06.09.2018 00:00:00','dd.mm.yyyy hh24:mi:ss') from dual union all
  3  select to_date('06.09.2018 11:59:59','dd.mm.yyyy hh24:mi:ss') from dual union all
  4  select to_date('06.09.2018 12:00:00','dd.mm.yyyy hh24:mi:ss') from dual union all
  5  select to_date('06.09.2018 12:01:01','dd.mm.yyyy hh24:mi:ss') from dual union all
  6  select to_date('06.09.2018 23:59:59','dd.mm.yyyy hh24:mi:ss') from dual union all
  7  select to_date('07.09.2018 00:00:00','dd.mm.yyyy hh24:mi:ss') from dual union all
  8  select to_date('07.09.2018 00:00:01','dd.mm.yyyy hh24:mi:ss') from dual)
  9* select to_char(d,'dd.mm.yyyy hh24:mi:ss') g,to_char(d,'J') j from t
SQL> /

G                   J
------------------- -------
06.09.2018 00:00:00 2458368
06.09.2018 11:59:59 2458368
06.09.2018 12:00:00 2458368
06.09.2018 12:01:01 2458368
06.09.2018 23:59:59 2458368
07.09.2018 00:00:00 2458369
07.09.2018 00:00:01 2458369


в оракле целое число и меняется в полночь

.....
stax
...
Рейтинг: 0 / 0
Дата
    #39699198
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
Код: plsql
1.
2.
3.
4.
5.
6.
SQL> select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss') g,to_char(sysdate,'J') j from dual
  2  /

G                   J
------------------- -------
06.09.2018 17:12:03 2458368




G - это типа "Григорианский"?
Смело.
Код: plsql
1.
2.
3.
4.
SQL> select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss') g,to_char(sysdate,'J') j from dual;
G                   J
------------------- -------
06.09.0030 17:35:31 2458368


:)
...
Рейтинг: 0 / 0
Дата
    #39699200
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
SELECT TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYYMMDD') DayID,
(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1) DayLabel,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYY')||'_w'||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'WW')) WeekID,
(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)||' '||'Нед'||' '||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'WW')) WeekLabel,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYY')||'_m'||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'MM')) MonthID ,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'MON.YY') MonthLabel
FROM dual
connect by rownum <= (TRUNC(ADD_MONTHS(SYSDATE,+36),'YY')+rownum-1) -(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)

подскажите, как это сделать в формате iso?
01.01.2016 года - это 53 неделя, а у меня 52
...
Рейтинг: 0 / 0
Дата
    #39699201
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousG - это типа "Григорианский"?
Смело.

Так смешнее:
Код: plsql
1.
2.
3.
4.
SQL> select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss') g,to_char(sysdate,'J') j from dual;
G                   J
------------------- -------
01.13.2010 17:37:51 2458368
...
Рейтинг: 0 / 0
Дата
    #39699202
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maska321подскажите, как это сделать в формате iso?
https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212
...
Рейтинг: 0 / 0
Дата
    #39699203
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,
спасибо, попробую разобраться
...
Рейтинг: 0 / 0
Дата
    #39699204
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
G - это типа "Григорианский"?
Смело.
:)
смело, но неудачно, луче наверное с

зы
NLS_CALENDAR GREGORIAN

.....
stax
...
Рейтинг: 0 / 0
Дата
    #39699328
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maska321Stax,
SELECT TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYYMMDD') DayID,
(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1) DayLabel,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYY')||'_w'||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'WW')) WeekID,
(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)||' '||'Нед'||' '||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'WW')) WeekLabel,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYY')||'_m'||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'MM')) MonthID ,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'MON.YY') MonthLabel
FROM dual
connect by rownum <= (TRUNC(ADD_MONTHS(SYSDATE,+36),'YY')+rownum-1) -(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)

подскажите, как это сделать в формате iso?
01.01.2016 года - это 53 неделя, а у меня 52

у кого еще есть полезная инфа/идеи по этому вопросу?
...
Рейтинг: 0 / 0
Дата
    #39699378
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maska321Maska321Stax,
SELECT TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYYMMDD') DayID,
(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1) DayLabel,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYY')||'_w'||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'WW')) WeekID,
(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)||' '||'Нед'||' '||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'WW')) WeekLabel,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'YYYY')||'_m'||(TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'MM')) MonthID ,
TO_CHAR((TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1),'MON.YY') MonthLabel
FROM dual
connect by rownum <= (TRUNC(ADD_MONTHS(SYSDATE,+36),'YY')+rownum-1) -(TRUNC(ADD_MONTHS(SYSDATE,-36),'YY')+rownum-1)

подскажите, как это сделать в формате iso?
01.01.2016 года - это 53 неделя, а у меня 52

у кого еще есть полезная инфа/идеи по этому вопросу?

21667294

Вам надо 52?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  1  select
  2    to_char(date '2016-01-01','IW') IW
  3   ,to_char(date '2016-01-01','WW') WW
  4*  from dual
SQL> /

IW WW
-- --
53 01



.....
stax
...
Рейтинг: 0 / 0
Дата
    #39699423
Maska321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Спасибо!
Подскажите как вывести 28.12.2015?

SELECT TO_CHAR(TRUNC(TRUNC(ADD_MONTHS(SYSDATE,-36),'IY'),'IW'),'DD.MM.IYYY')
FROM dual

выводит только 29.12.2015(
...
Рейтинг: 0 / 0
Дата
    #39699441
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maska321Stax,

Спасибо!
Подскажите как вывести 28.12.2015?

SELECT TO_CHAR(TRUNC(TRUNC(ADD_MONTHS(SYSDATE,-36),'IY'),'IW'),'DD.MM.IYYY')
FROM dual

выводит только 29.12. 2015 (

у меня нет практики работы с ISO 8601 (не знаю)

ps
в качестве шютки (ххх)-1

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  1  SELECT
  2    ADD_MONTHS(SYSDATE,-36) mm_36
  3   ,TRUNC(ADD_MONTHS(SYSDATE,-36),'IY') IY
  4   ,TRUNC(TRUNC(ADD_MONTHS(SYSDATE,-36),'IY'),'IW') IW
  5   ,TO_CHAR(TRUNC(TRUNC(ADD_MONTHS(SYSDATE,-36),'IY'),'IW'),'DD.MM.YYYY')
  6* FROM dual
SQL> /

MM_36    IY       IW       TO_CHAR(TR
-------- -------- -------- ----------
07.09.15 29.12.14 29.12.14 29.12.2014



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


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