Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Настройка timezone в Oracle / 18 сообщений из 18, страница 1 из 1
05.09.2014, 23:56
    #38739153
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Сейчас MSK время: 23:53 5 сентября.

Использую oracle драйвера под Линукс на клиенте.
/etc/localtime -> /usr/share/zoneinfo/Europe/Moscow

SELECT SESSIONTIMEZONE FROM DUAL возращает таймзону: { SESSIONTIMEZONE: '+04:00' } ]


SELECT SESSIONTIMEZONE FROM DUAL
возвращает:
[ { SYSDATE: Sat Sep 06 2014 03:53:21 GMT+0400 (MSK) } ]
Что в общем неправильно.
Хочется все таки получить нормальную дату. Что в данном случае не так настроено - либо клиент/его таймзона или еще что-то, либо Oracle сервер ?
...
Рейтинг: 0 / 0
05.09.2014, 23:57
    #38739155
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
2 азпрос: select sysdate from DUAL
...
Рейтинг: 0 / 0
06.09.2014, 02:06
    #38739185
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Правильно, неправильно. Да почитал бы ты доку для начала. SYSDATE :

SYSDATE returns the current date and time set for the operating system on which the database server resides .

И CURRENT_DATE :

CURRENT_DATE returns the current date in the session time zone

SY.
...
Рейтинг: 0 / 0
06.09.2014, 03:42
    #38739193
AG#
AG#
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
SYПравильно, неправильно. Да почитал бы ты доку для начала. SYSDATE :

SYSDATE returns the current date and time set for the operating system on which the database server resides .

И CURRENT_DATE :

CURRENT_DATE returns the current date in the session time zone

SY.

Все верно.Про доку.
...
Рейтинг: 0 / 0
06.09.2014, 10:52
    #38739245
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
SYПравильно, неправильно. Да почитал бы ты доку для начала. SYSDATE :

SYSDATE returns the current date and time set for the operating system on which the database server resides .

И CURRENT_DATE :

CURRENT_DATE returns the current date in the session time zone

SY.

Селекты отдают единтичный результат. Так же все таки получить правильный ? Проблема в том что данные-даты из таблиц отдаются неправильно. не могу понять что настроить так чтобы получить правильно.
...
Рейтинг: 0 / 0
06.09.2014, 15:57
    #38739344
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
ЯСелекты от дают е д и нтичный результат.

Код: sql
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.
30.
31.
32.
33.
34.
35.
36.
37.
SQL> alter session set nls_date_format='mm/dd/yyyy hh24:mi:ss'
  2  /

Session altered.

SQL> select sysdate,current_date from dual
  2  /

SYSDATE             CURRENT_DATE
------------------- -------------------
09/06/2014 07:55:05 09/06/2014 07:55:05

SQL> alter session set time_zone='PST'
  2  /

Session altered.

SQL> select sysdate,current_date from dual
  2  /

SYSDATE             CURRENT_DATE
------------------- -------------------
09/06/2014 07:55:39 09/06/2014 04:55:39

SQL> alter session set time_zone='Europe/Moscow'
  2  /

Session altered.

SQL> select sysdate,current_date from dual
  2  /

SYSDATE             CURRENT_DATE
------------------- -------------------
09/06/2014 07:56:07 09/06/2014 15:56:07

SQL>



ЯПроблема в том что данные-даты из таблиц отдаются неправильно. не могу понять что настроить так чтобы получить правильно.

Данные типа DATE временной зоны вообще не имеют.

SY.
P.S. Похоже тебе даты не "отдаются"
...
Рейтинг: 0 / 0
06.09.2014, 18:05
    #38739370
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
P.S. Похоже тебе даты не "отдаются"

Вот вопрос более конкретней:
Есть поле в таблице
select idate from table where rownum = 1
idate: Sat Sep 06 2014 21:09:52 GMT+0400 (MSK),

Человек, который пишет туда данные утверждает, что дату нужно смешать на +04:00 ( т е дата отдается в UTC несмотря на то, что пишется MSK. ). Вопрос: как правильно получить дату ? Т е можно чтобы дата отдавалась даже в UTC ( только чтобы писалась правильно - UTC, можно в MSK ( только чтобы правильно отдавалась ) ).
...
Рейтинг: 0 / 0
06.09.2014, 18:12
    #38739374
AG#
AG#
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Я,

так уметь надо чтоб отдавалась (прости )


доку читаем.....
...
Рейтинг: 0 / 0
06.09.2014, 18:13
    #38739375
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Еще раз - у DATE нет временной зоны и если

select idate from table where rownum = 1

возвращает

idate: Sat Sep 06 2014 21:09:52 GMT+0400 (MSK)

то idate это не DATE а TIMESTAMP. Так что огласи для начала тип поля idate.

SY.
...
Рейтинг: 0 / 0
08.09.2014, 09:04
    #38740167
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
AG#SYПравильно, неправильно. Да почитал бы ты доку для начала. SYSDATE :

SYSDATE returns the current date and time set for the operating system on which the database server resides .

И CURRENT_DATE :

CURRENT_DATE returns the current date in the session time zone

SY.

Все верно. Про доку .
2 AG# Что сказать то хотел? Мысль осталась незаконченной... если была...

Да верно, к но этому, пожалуй, можно добавить " ... или returns the current date and time set
таймзоны, которая была установлена, например командой export TZ , и
действовала для сеанса OS на момент старта базы данных "
...
Рейтинг: 0 / 0
08.09.2014, 09:17
    #38740182
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
P.S.
Sorry, неточно выразился...
"... или returns the current date and time set
таймзоны, которая была установлена, например командой export TZ, и
действовала для сеанса OS на момент старта листенера "

В соответствие с таймзоной, которая действовала для сеанса OS на момент старта базы данных, будут выполнятся джобы .
...
Рейтинг: 0 / 0
08.09.2014, 10:29
    #38740236
AG#
AG#
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Viewer,

oracle dba_jobs nls_env ставится на ура

ну и http://www.serkey.com/tag/dbms-scheduler-set-attribute-nls-env/
...
Рейтинг: 0 / 0
08.09.2014, 12:59
    #38740429
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
SYЕще раз - у DATE нет временной зоны и если

select idate from table where rownum = 1

возвращает

idate: Sat Sep 06 2014 21:09:52 GMT+0400 (MSK)

то idate это не DATE а TIMESTAMP. Так что огласи для начала тип поля idate.

SY.
Тип date там если что.

Вот еще один пример:

SELECT SYSDATE from DUAL отдает GMT+04:00 16 часов (неверно).

SELECT to_char(SYSDATE,\'DD.MM.YYYY HH:MM\') FROM DUAL отдает 12 часов, что верно.

В чем проблема ?
...
Рейтинг: 0 / 0
08.09.2014, 13:39
    #38740497
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Куда отдаётся?

Покажите сие в виде вывода sqlplus, с явным указанием текущих nls-настроек.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.06.2021, 09:34
    #40079504
SVI_VAL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Я
SYЕще раз - у DATE нет временной зоны и если

select idate from table where rownum = 1

возвращает

idate: Sat Sep 06 2014 21:09:52 GMT+0400 (MSK)

то idate это не DATE а TIMESTAMP. Так что огласи для начала тип поля idate.

SY.

Тип date там если что.

Вот еще один пример:

SELECT SYSDATE from DUAL отдает GMT+04:00 16 часов (неверно).

SELECT to_char(SYSDATE,\'DD.MM.YYYY HH:MM\') FROM DUAL отдает 12 часов, что верно.

В чем проблема ?
Предположу, что в "HH:MM", можно время выводить так:
Код: plsql
1.
select to_char(SYSDATE,'DD.MM.YYYY HH:MM:MM:SS:DD:YY') from dual;


оно будет совсем неправильным.
Сделайте
Код: plsql
1.
SELECT SYSDATE, to_char(SYSDATE,'DD.MM.YYYY HH:MI'), to_char(SYSDATE,'DD.MM.YYYY HH:MI:SS') FROM DUAL;


будет лучше.
...
Рейтинг: 0 / 0
23.06.2021, 13:18
    #40079573
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
Я
Селекты отдают единтичный результат.

"единтичный" - это новое слово в русском языке!

Берем на вооружение! :-)
...
Рейтинг: 0 / 0
23.06.2021, 14:12
    #40079585
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
SQL*Plus
Я
Селекты отдают единтичный результат.
"единтичный" - это новое слово в русском языке!

Берем на вооружение! :-)
Валерий, если бы у вас остался бы кусочек мозга, незамутнённого маркетологической хренью, то он бы должен был понять, что это бессмысленное гробокапательство. Но раз пост возник - значит кусочка нет :(
...
Рейтинг: 0 / 0
23.06.2021, 14:15
    #40079586
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка timezone в Oracle
SVI_VAL
Я
пропущено...

Тип date там если что.

Вот еще один пример:

SELECT SYSDATE from DUAL отдает GMT+04:00 16 часов (неверно).

SELECT to_char(SYSDATE,\'DD.MM.YYYY HH:MM\') FROM DUAL отдает 12 часов, что верно.

В чем проблема ?

Предположу, что в "HH:MM", можно время выводить так:
Код: plsql
1.
select to_char(SYSDATE,'DD.MM.YYYY HH:MM:MM:SS:DD:YY') from dual;


оно будет совсем неправильным.
Сделайте
Код: plsql
1.
SELECT SYSDATE, to_char(SYSDATE,'DD.MM.YYYY HH:MI'), to_char(SYSDATE,'DD.MM.YYYY HH:MI:SS') FROM DUAL;


будет лучше.

HH - это долбанутый 12-ти часовой англосаксонский формат представления даты.
Необходимо выводить дополнительно AM/PM
Используйте нормальный 24-х часовой формат HH24
Код: 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.
30.
31.
32.
33.
34.
35.
SQL> WITH dt AS (SELECT TRUNC(SYSDATE)+(rownum-1)/24 AS dtime FROM dual CONNECT BY LEVEL <= 26)
  2  --
  3  SELECT TO_CHAR(dtime, 'HH AM "=" HH24') AS time_12_vs_time_24
  4  FROM dt;

TIME_12_VS
----------
12 AM = 00
01 AM = 01
02 AM = 02
03 AM = 03
04 AM = 04
05 AM = 05
06 AM = 06
07 AM = 07
08 AM = 08
09 AM = 09
10 AM = 10
11 AM = 11
12 PM = 12
01 PM = 13
02 PM = 14
03 PM = 15
04 PM = 16
05 PM = 17
06 PM = 18
07 PM = 19
08 PM = 20
09 PM = 21
10 PM = 22
11 PM = 23
12 AM = 00
01 AM = 01

26 rows selected. 


После 11 AM
Наступает 12 PM

После 12 PM
Наступает 01 PM

Зато
после 11 PM
Наступает 12 AM

А потом
после 12 AM
Наступает 01 AM


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


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