大家好,
在下面找到一些有关oracle中时区转换的有用信息。 希望这对他们中的许多人有所帮助,因为我们从事的所有实时项目都遵循不同的时区(EST,PST等),您可能需要根据需要将它们转换为特定的项目:
insert into dates values(6, to_date('09/20/05 23:15', 'MM/DD/YY HH24:MI'));
--The contents of the table now look like this:
1 09/14/05, 21:08
2 09/27/05, 00:00
3 10/02/05, 22:05
4 09/01/05, 17:01
5 09/12/05, 14:30
6 09/20/05, 23:15
更改时区
Oracle中的日期格式不包含时区信息,但是数据库中包含。 要找出时区设置,请执行以下查询:
SELECT dbtimezone FROM dual;
DBTIME
——
-04:00
可以使用以下命令来更新时区:
ALTER database SET TIME_ZONE = '-05:00';
您可以在其中指定格林威治标准时间的偏移量或v $ timezone_names视图中列表的有效时区。
注意,这是为数不多的“ v $”视图中的少数视图之一。
切换时区
函数new_time用于将时间转换为不同的时区。 为了说明这一点,我们将看一下日期文件中的条目5。
SELECT entry, to_char(entry_date, 'MM/DD/YY HH:MI AM') e_date FROM dates WHERE entry=5;
entry e_date
5 09/12/05 02:30 PM
该数据库是美国东部时间,但我们要显示美国中部时间。
SELECT entry, to_char(new_time(entry_date, 'EST', 'CST'), 'MM/DD/YY HH:MI AM') e_Date FROM dates WHERE entry=5;
entry e_date
5 09/12/05 01:30 PM
在这里,我们可以清楚地看到时间转换为中部时间。
请注意,new_time函数是在日期字段上执行的,而不是在to_char上执行的。
现在让我们在太平洋时间抓紧这次:
SELECT entry, to_char(new_time(entry_date, 'EST', 'PST'), 'MM/DD/YY HH:MI AM') e_date FROM dates WHERE entry=5;
entry e_date
5 09/12/05 11:30 AM
现在,我们不仅看到时间转换了,而且一天中的时间已经从PM变为AM。
现在让我们看一下条目6:
SELECT entry, to_char(entry_date, 'MM/DD/YY HH:MI AM') e_date FROM dates WHERE entry=6;
entry e_date
6 09/20/05 11:15 PM
我们再次假设该时间戳记为美国东部时间,但让我们将其转换为格林威治标准时间。
SELECT entry, to_char(new_time(entry_date, 'EST', 'GMT'), 'MM/DD/YY HH:MI AM') e_date FROM dates WHERE entry=6;
entry e_date
6 09/21/05 04:15 AM
这不仅显示了小时数的变化,而且还显示了其时区的此项的日期显示正确。
当然,new_time函数可以以相同的方式用于插入。
如果您允许来自不同地理区域的人进行输入,这将很有用。
在这里,我们将太平洋时间的条目转换为东部:
码:
INSERT INTO dates
VALUES (7,
new_time(to_date(’09/22/05 10:28 AM’, ‘MM/DD/YY HH:MI AM’), ‘PST’, ‘EST’));
SELECT entry, to_char(entry_date, ‘MM/DD/YY HH:MI AM’) e_date FROM dates WHERE entry=7;
entry e_date
7 09/22/05 01:28 PM
因此,我们已将太平洋时间10:28 AM转换为东部时间1:28 PM,因此表中的所有条目都是一致的。
当然,在执行插入操作时,我们需要将to_date函数放入new_time函数中,以便在尝试转换之前将文本字符串转换为日期格式。
From: https://bytes.com/topic/oracle/insights/859531-convertion-time-zones-oracle