pil*_*row 12 sql postgresql timezone timestamp
有什么方法可以快速简便地纠正TIMESTAMP WITH TIME ZONE
在错误的时区内意外输入的时区字段?
在我的情况下,以下记录错误地以UTC而不是美国/太平洋输入:
t0 | t1 | what
------------------------+------------------------+---------------
2011-06-01 13:00:00+00 | 2011-06-01 13:10:00+00 | recalibrating
2011-06-01 13:10:00+00 | 2011-06-01 13:45:00+00 | verifying
2011-06-01 13:45:00+00 | 2011-06-01 13:55:00+00 | FAULT
Run Code Online (Sandbox Code Playgroud)
幸运的是,没有任何错误的记录跨越夏令时边界,所以UTC的2点可以简单地修正为太平洋2点.
Mil*_*dev 16
UPDATE <table> SET <timestamptz_field> = (<timestamptz_field> AT TIME ZONE 'UTC') AT TIME ZONE '<correct_time_zone>';
Run Code Online (Sandbox Code Playgroud)
有一些演员表,更重要的是at time zone
操作员,它们对这类事物非常有用,例如:
test=# select now(),
now()::timestamp;
now | now
-------------------------------+----------------------------
2011-06-27 14:32:04.169292+02 | 2011-06-27 14:32:04.169292
(1 row)
test=# select now() at time zone 'utc',
(now() at time zone 'utc')::timestamp with time zone;
timezone | timezone
----------------------------+-------------------------------
2011-06-27 12:32:28.430479 | 2011-06-27 12:32:28.430479+02
(1 row)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8847 次 |
最近记录: |