Для преобразования CST в IST часовой пояс

#sql #oracle #timezone

#sql #Oracle #Часовой пояс

Вопрос:

Мое фактическое требование таково,

Это входные данные, которые у нас есть в текстовом файле,

Строка ниже содержит (идентификатор Emp, дату, HH: MM: SS (то есть время), статус, номер сайта, номер читателя

123,»20/02/2019″,00:00:50, В,23,1

В приведенном выше примере я должен принять 123 в качестве идентификатора Emp и присвоить его одной переменной с именем tv_emp_id.

 then, have to take date and HH:MM ("20/02/2019",02:30) and convert it into IST date amp; time (21-02-2019,14:00)), then put date (21-02-2019 format) alone in one variable called tv_date and HHMM in another variable called tv_time (14:00 it will be 1400) by Oracle query.

Finally required it with, tv_emp_id= 123;
           tv_date = 21-02-2019
           tv_time = 1400
  

Пожалуйста, помогите мне решить эту проблему.

Спасибо

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос, включив в него примеры данных — в частности, начальный тип данных — и результаты.

2. Почему 12:29, а не 12:30? И это даты или временные метки?

3. Что такое часовой пояс CST и IST? Взгляните на SELECT TZABBREV, TZ_OFFSET(TZNAME), TZNAME FROM V$TIMEZONE_NAMES WHERE TZABBREV in ('CST', 'IST')

Ответ №1:

Если вы имеете в виду центральное стандартное время и стандартное время Индии, и вы начинаете с простой временной метки:

 alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS';
alter session set nls_timestamp_tz_format = 'YYYY-MM-DD HH24:MI:SS TZD';

select timestamp '2019-03-20 02:00:00'  as original,
  from_tz(timestamp '2019-03-20 02:00:00', 'America/Chicago') as cst,
  from_tz(timestamp '2019-03-20 02:00:00', 'America/Chicago') at time zone 'Asia/Calcutta' as ist
from dual;

ORIGINAL            CST                     IST                    
------------------- ----------------------- -----------------------
2019-03-20 02:00:00 2019-03-20 02:00:00 CDT 2019-03-20 12:30:00 IST
  

Если вы хотите в конечном итоге получить обычную временную метку (или дату), а не временную метку с часовым поясом, то приведите результат к нужному типу данных.

Если вы начинаете с даты, то вам нужно преобразовать ее во временную метку внутри from_tz() вызова.