时区转换联接到数据表 sql



我编写了一些代码,允许我从UTC时间转换为本地时间,但是我传入的时间是一个虚拟值,时区也是如此。我希望这能够处理实际数据,但我不确定如何组合。可能是子查询?

这是我对时区转换的查询:

Select From_Tz(Cast(To_Timestamp('17-FEB-14 04.00.00.000000000 PM',
'DD-MON-YY HH.MI.SS.FF9 AM') As Timestamp), 'UTC')
 At Time Zone 'America/New_York' As "Local Time"
 FROM DUAL;

代替"17-FEB-14 04.00.00.000000000 PM"和"America/New_York",我想传入从以下查询返回的值:

Select s.Max(Date), time.Local_Time_Zone from Sales s
join on s.customer_ID = time.customer_ID
where s.customer_ID = 122;

如果表中只有该 ID 的一条记录(这似乎很有可能),那么您不需要 max() 或子查询,您可以直接从该表中进行选择,例如:

select from_tz(cast(date_field as timestamp), 'UTC')
  at time zone customer_time_zone as "Local Time"
from customer_table;

我还假设您的"日期"字段实际上是一个DATE,还不是TIMEZONE,但这并不完全清楚。

使用显示格式:

select to_char(from_tz(cast(date_field as timestamp), 'UTC')
  at time zone customer_time_zone, 'YYYY-MM-DD HH24:MI:SS') as "Local Time"
from customer_table;
LOCAL TIME
-------------------
2014-02-16 19:00:00

SQL 小提琴


根据您更新的问题,主体是相同的,您只有两个表要连接:

select to_char(from_tz(cast(max(s.date_field) as timestamp), 'UTC')
  at time zone t.local_time_zone, 'YYYY-MM-DD HH24:MI:SS') as "Local Time"
from sales s
join time t on t.customer_id = s.customer_id
group by s.customer_id, t.local_time_zone;

SQL 小提琴。

相关内容

  • 没有找到相关文章

最新更新