首页 > 解决方案 > 从 timestamptz 中提取日期部分

问题描述

我正在尝试从带有时区的时间戳中提取小时。然而,我的时代来不及了。

这是一个示例,我正在使用 Dbeaver 并将我的时区设置为 EST:

SELECT '2020-01-24 14:27:12' AT TIME ZONE 'US/Pacific' as foo,
EXTRACT(HOUR FROM foo) as ex,
DATE_PART('HOUR', foo::timestamp) as dp

回报:

foo                 |ex |dp
2020-01-24 17:27:12 |22 | 22
foo                 |ex |dp
2020-01-24 11:27:12 |11 | 11

标签: sqlamazon-redshift

解决方案


检查您的时区是否设置为 EST:

SELECT current_setting('TIMEZONE');

或与:

show timezone;

如果不是,您可以这样设置:

set timezone to est;

如本演示所示

如果那不起作用,请尝试convert_timezone

select convert_timezone('US/Pacific', '2020-01-24 14:27:12')

探索手头的材料,我发现了这个事实:

注意 Amazon Redshift 不验证 POSIX 样式的时区规范,因此可以将时区设置为无效值。例如,以下命令不会返回错误,即使它将时区设置为无效值也是如此。

将时区设置为“xxx36”;

从这个来源:https ://docs.aws.amazon.com/redshift/latest/dg/CONVERT_TIMEZONE.html


推荐阅读