开发人员已将数据写入数据库,该数据库的时区格式不正确。它没有一个小时的偏移量,而是具有如下所示的名称:
18-NOV-16 12.17.41.000000000 PM -05:00
18-NOV-16 12.17.05.000000000 PM -05:00
18-NOV-16 12.16.07.000000000 PM AMERICA/NEW_YORK
18-NOV-16 12.12.54.000000000 PM -05:00
18-NOV-16 12.12.33.000000000 PM -05:00
相关列的类型为TIMESTAMP(0) WITH TIMEZONE
。另一个第三方应用程序正在崩溃读取这些记录,因为它显然没有编码来处理长格式时区。
在这里研究,我找到了正确的更新查询来纠正这个问题:
UPDATE <<your table>>
SET <<your timestamp column>> = <<your timestamp column>> AT TIME ZONE 'UTC'
问题是我有500K +记录,并且当只涉及几百行时(由于更新后发生的复制),不想更新整个表。如何使用WHERE
子句仅获取使用不合适的时区数据存储的行?我已经全部阅读,无法找到按时区格式显示过滤结果的示例。
感谢您的帮助!
答案 0 :(得分:3)
我没有测试数据,但试试这个:
where extract(timezone_region from date_column) <> 'UNKNOWN'
我认为当你使用这个功能时,它只有数字值(不是区域),它会返回'UNKNOWN'