在我们的应用程序中,我们将用户的时区与用户记录一起存储在数据库中。 但是,以某种方式,我们最终得到了无效的时区(就Postgres而言)。可能是因为原始值a来自其他来源...
现在,当我们尝试在其中一个查询中使用时区时,例如:
select current_time, u.*
from users u
where extract(hour from (current_time at time zone u.time_zone)) = 8
我们收到如下错误:
错误:时区“ US / Pacific-New”未被识别
解决此问题的最佳方法是什么?如何识别所有具有无效时区的记录?
答案 0 :(得分:4)
如何识别所有具有无效时区的记录?
这是一种方式
SELECT u.*
FROM users u
WHERE NOT EXISTS (SELECT 1
FROM pg_timezone_names tz
WHERE tz.NAME = u.time_zone);