powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Настройка timezone в Oracle
18 сообщений из 18, страница 1 из 1
Настройка timezone в Oracle
    #38739153
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
Сейчас 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
Настройка timezone в Oracle
    #38739155
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
2 азпрос: select sysdate from DUAL
...
Рейтинг: 0 / 0
Настройка timezone в Oracle
    #38739185
Фотография 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
Настройка timezone в Oracle
    #38739193
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.

Все верно.Про доку.
...
Рейтинг: 0 / 0
Настройка timezone в Oracle
    #38739245
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
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
Настройка timezone в Oracle
    #38739344
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯСелекты от дают е д и нтичный результат.

Код: 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
Настройка timezone в Oracle
    #38739370
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
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
Настройка timezone в Oracle
    #38739374
AG#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я,

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


доку читаем.....
...
Рейтинг: 0 / 0
Настройка timezone в Oracle
    #38739375
Фотография 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.
...
Рейтинг: 0 / 0
Настройка timezone в Oracle
    #38740167
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Настройка timezone в Oracle
    #38740182
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
Sorry, неточно выразился...
"... или returns the current date and time set
таймзоны, которая была установлена, например командой export TZ, и
действовала для сеанса OS на момент старта листенера "

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

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

ну и http://www.serkey.com/tag/dbms-scheduler-set-attribute-nls-env/
...
Рейтинг: 0 / 0
Настройка timezone в Oracle
    #38740429
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
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
Настройка timezone в Oracle
    #38740497
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда отдаётся?

Покажите сие в виде вывода sqlplus, с явным указанием текущих nls-настроек.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Настройка timezone в Oracle
    #40079504
SVI_VAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я
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
Настройка timezone в Oracle
    #40079573
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я
Селекты отдают единтичный результат.

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

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

Берем на вооружение! :-)
Валерий, если бы у вас остался бы кусочек мозга, незамутнённого маркетологической хренью, то он бы должен был понять, что это бессмысленное гробокапательство. Но раз пост возник - значит кусочка нет :(
...
Рейтинг: 0 / 0
Настройка timezone в Oracle
    #40079586
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Настройка timezone в Oracle
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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