gpt4 book ai didi

sql - 如何从 timestamptz 中提取一致的年份

转载 作者:行者123 更新时间:2023-11-29 13:05:07 25 4
gpt4 key购买 nike

我正在尝试使用 Postgres 函数 extract()timestamptz 列中获取年份,但得到了意想不到的结果。我预计它会使用 UTC,但似乎使用系统的任何本地时区(在我的例子中是 EST)。无论时间戳或系统的时区是什么,如何让 extract 函数返回 UTC?

示例 1:

testdb=# create table foo ( t timestamptz check( extract(year from t)::int = 2013) );

testdb=# \d foo
Table "public.foo"
Column | Type | Modifiers
--------+--------------------------+-----------
t | timestamp with time zone |
Check constraints:
"foo_t_check" CHECK (date_part('year'::text, t)::integer = 2013)

testdb=# insert into foo values ('2013-01-01 01:49:05.048+00');
ERROR: new row for relation "foo" violates check constraint "foo_t_check"
DETAIL: Failing row contains (2012-12-31 20:49:05.048-05).

示例 2:

testdb=# SELECT EXTRACT(year FROM '01-01-1970 00:00:00 UTC+01'::timestamp with time zone);
date_part
-----------
1969
(1 row)

最佳答案

使用在时区

create table foo (
t timestamptz
check (extract(year from t at time zone 'UTC') = 2013)
);

select extract(year from
'01-01-1970 00:00:00 utc+01'::timestamp with time zone at time zone 'utc'
);
date_part
-----------
1970

关于sql - 如何从 timestamptz 中提取一致的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15638605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com