显示 DATE 列的客户端本地时间

Buy Database Forum Highlights Big Data’s Global Impact
Post Reply
emailnumberlist423
Posts: 64
Joined: Sat Dec 07, 2024 3:34 am

显示 DATE 列的客户端本地时间

Post by emailnumberlist423 »

在Oracle数据库中,该数据类型通常DATE用于日期和时间存储。只要所有客户端都位于同一时区,这通常不是问题,因为所有用户都有相同的时间。但是,如果您需要显示正确的时间(例如订单等)(例如网上商店),您该怎么办?

当然,这里最好的方法是简单地TIMESTAMP WITH TIMZONE切换到列,但这显然 香港电报号码数据 不仅会带来数据库的深刻变化,还会带来应用程序和界面的深刻变化。

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

Image


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

首先我们需要找出数据库所在的时区。这是使用 SQL 函数完成的DBTIMEZONE。
因此,数据库也配置为中欧(欧洲/维也纳时区)+1 小时。事实并非如此,因为 Oracle 默认使用 UTC (+00) 创建数据库。

以下查询使用两种变体将日期转换为客户端时间。为了方便读取时间TO_CHAR,我们使用会话设置NLS_DATE_FORMAT来显示日期和时间。
Post Reply