Page 1 of 1

如果数据库使用默认 UTC ( = +0)DBTIMEZONE运行,结果会是什么样子?

Posted: Sat Dec 07, 2024 4:02 am
by emailnumberlist423
在这里我们看到,在这种情况下,“正确”和“错误”列中确实存在一些不同。原因是在更简单的版本中(“错误”),Oraclecast(sysdate as timestamp) at time zone 'America/New_York'当然以此为基础DBTIMEZONE,并且不知道这些DATE列实际上代表欧洲/维也纳时区的时间。此信息(时区)DATE根本不包含在数据类型中!

概括
该数据类型DATE在数据库中占用的空间较少,并且比具有该数 香港电报手机号码列表 据类型的列处理速度更快TIMESTAMP WITH TIMEZONE。由于数据类型转换必须在数据库和应用程序中实现,因此这是相当复杂的。如果您只需要在应用程序中的几个位置为客户端输出正确的时间,则在此处简单计算会更容易。使用以下表达式完成正确的计算:
当然,这里最好的方法是简单地TIMESTAMP WITH TIMZONE切换到列,但这显然不仅会带来数据库的深刻变化,还会带来应用程序和界面的深刻变化。

Image


如果唯一的要求是想要正确地将DATE中存储的时间信息输出到客户端,这当然更容易。

测试环境
该数据库在中欧(欧洲/维也纳时区)运行,因此也采用夏令时。为客户输出的时间当然还应该考虑到不同的夏令时规定。在示例中,我们假设纽约的客户想要获得正确的时间。

首先我们需要找出数据库所在的时区。这是使用 SQL 函数完成的DBTIMEZONE。