#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()
вызова.