Мое требование здесь - получить время в GMT/UTC из столбца типа даты. Но когда я использую бросок для датирования даты в timestamp, он использует часовой пояс US/Pacific в качестве ссылки, хотя часовой пояс сеанса установлен на GMT. Поэтому, если я не использую from_tz, я не вижу желаемого результата. Есть ли какой-либо другой параметр часового пояса в оракуле sql, который мне нужно изменить, чтобы всегда использовать GMT в качестве ссылки?Oracle sql timezone issue
alter session set time_zone='+00:00';
select sessiontimezone from dual;
select current_timestamp from dual;
select sys_extract_utc(cast (sysdate as timestamp)) from dual;
select sys_extract_utc(from_tz(cast (sysdate as timestamp), '-07:00')) from dual;
select sys_extract_utc(current_timestamp) from dual;
Session altered.
SESSIONTIMEZONE
---------------------------------------------------------------------------
+00:00
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
11-APR-16 08.46.42.292173 AM +00:00
SYS_EXTRACT_UTC(CAST(SYSDATEASTIMESTAMP))
---------------------------------------------------------------------------
11-APR-16 01.46.42.000000 AM
SYS_EXTRACT_UTC(FROM_TZ(CAST(SYSDATEASTIMESTAMP),'-07:00'))
---------------------------------------------------------------------------
11-APR-16 08.46.42.000000 AM
SYS_EXTRACT_UTC(CURRENT_TIMESTAMP)
---------------------------------------------------------------------------
11-APR-16 08.46.42.295310 AM
Таблица задач имеет столбец типа даты, называемый task_started. Я ищу, чтобы получить время UTC из этого поля даты. В рамках этого я пытался изменить временную зону сеанса на GMT при вставке данных, чтобы я мог просто отбросить ее обратно на временную метку, которая не работает.
select task_started from tasks where rownum <2;
TASK_STAR
---------
10-APR-16
desc tasks;
Name Null? Type
----------------------------------------- -------- ----------------------------
...
TASK_STARTED DATE
...
Можете ли вы привести пример хранимой даты (со временем) и ожидаемого результата? В каком часовом поясе указывается дата/время в этом столбце и как вы знаете - есть ли другой столбец, хранящий его часовой пояс, или вы предполагаете, что требуется какое-то преобразование? –
@AlexPoole В моей таблице сохранена только дата, поэтому я возвращаю ее обратно в метку времени. Я предполагаю, что дата/время, хранящиеся в таблице, должны использовать временную зону сеанса, которая является GMT, поскольку я изменил зону сеанса. Поскольку функция броска возвращает время назад в США/Тихоокеанском регионе, я смутился. –
У столбца даты нет часового пояса (но всегда есть время, даже если ваш запрос/клиент этого не показывает). Если вы нажмете как обычную временную метку, время останется неизменным, но у него по-прежнему не будет информации о часовом поясе.Ваш вопрос заключается в преобразовании даты/времени в UTC, что означает, что он хранится или предоставляется из определенной зоны. Например. если дата была первоначально вставлена с использованием sysdate, что подразумевает часовой пояс сервера, и вы хотите получить эквивалент UTC. Пожалуйста, добавьте данные и выводите их, поскольку не ясно, что вам действительно нужно. –