Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用时区夏令时插入时间_Sql_Postgresql_Datetime_Timezone_Dst - Fatal编程技术网

Sql 使用时区夏令时插入时间

Sql 使用时区夏令时插入时间,sql,postgresql,datetime,timezone,dst,Sql,Postgresql,Datetime,Timezone,Dst,我想在postgresql中插入时间数据类型,该数据类型包括时区,并且知道夏令时。这就是我所做的: CREATE TABLE mytable( ... start_time time(0) with time zone, end_time time(0) with time zone ) INSERT INTO mytable(start_time, end_time) VALUES(TIME '08:00:00 MST7MDT', TIME '18:00:00 MST

我想在postgresql中插入时间数据类型,该数据类型包括时区,并且知道夏令时。这就是我所做的:

CREATE TABLE mytable(
    ...
    start_time time(0) with time zone,
    end_time time(0) with time zone
)

INSERT INTO mytable(start_time, end_time)
VALUES(TIME '08:00:00 MST7MDT', TIME '18:00:00 MST7MDT')
我得到以下错误:

时间类型“08:00:00 MST7MDT”的输入语法无效

如果我使用“MST”而不是“MST7MDT”,它是有效的,但我需要它来了解DST。我也试着用“美国/埃德蒙顿”作为时区,但我得到了同样的错误

插入带有时区和DST的时间值(不是时间戳)的正确方法是什么

编辑: 实际上,我想使用“America/Edmonton”语法正确的方法是不要将
时间与时区一起使用
(请注意
时间
区域
)之间的空间,因为它被设计破坏了。它在SQL标准中,因此Postgres支持该类型,但建议不要使用它。更多相关答案:

由于您遇到问题,
timetz
(简称)是一个特别糟糕的选择。它不具备处理DST的能力。很难说
8:00:00
是在冬季还是夏季

改用。您始终可以放弃日期部分。只需使用
start\u time::time
即可从
timestamptz
获取本地时间。或者用来转换到你的时区

通常,要自动考虑DST,请使用时区名称而不是时区缩写。有关此相关问题和答案的更多说明:

在您的特定情况下,您可能会使用
America/Los_Angeles
(例如
timestamptz
):

我通过检查发现:

SELECT * FROM pg_timezone_names 
WHERE  utc_offset = '-07:00'
AND    is_dst;
时区处理的基本知识:
正确的方法是不要将
时间与时区
(请注意
时间
区域
之间的间距),因为它是由设计破坏的。它在SQL标准中,因此Postgres支持该类型,但建议不要使用它。更多相关答案:

由于您遇到问题,
timetz
(简称)是一个特别糟糕的选择。它不具备处理DST的能力。很难说
8:00:00
是在冬季还是夏季

改用。您始终可以放弃日期部分。只需使用
start\u time::time
即可从
timestamptz
获取本地时间。或者用来转换到你的时区

通常,要自动考虑DST,请使用时区名称而不是时区缩写。有关此相关问题和答案的更多说明:

在您的特定情况下,您可能会使用
America/Los_Angeles
(例如
timestamptz
):

我通过检查发现:

SELECT * FROM pg_timezone_names 
WHERE  utc_offset = '-07:00'
AND    is_dst;
时区处理的基本知识:
正确的方法是不要将
时间与时区
(请注意
时间
区域
之间的间距),因为它是由设计破坏的。它在SQL标准中,因此Postgres支持该类型,但建议不要使用它。更多相关答案:

由于您遇到问题,
timetz
(简称)是一个特别糟糕的选择。它不具备处理DST的能力。很难说
8:00:00
是在冬季还是夏季

改用。您始终可以放弃日期部分。只需使用
start\u time::time
即可从
timestamptz
获取本地时间。或者用来转换到你的时区

通常,要自动考虑DST,请使用时区名称而不是时区缩写。有关此相关问题和答案的更多说明:

在您的特定情况下,您可能会使用
America/Los_Angeles
(例如
timestamptz
):

我通过检查发现:

SELECT * FROM pg_timezone_names 
WHERE  utc_offset = '-07:00'
AND    is_dst;
时区处理的基本知识:
正确的方法是不要将
时间与时区
(请注意
时间
区域
之间的间距),因为它是由设计破坏的。它在SQL标准中,因此Postgres支持该类型,但建议不要使用它。更多相关答案:

由于您遇到问题,
timetz
(简称)是一个特别糟糕的选择。它不具备处理DST的能力。很难说
8:00:00
是在冬季还是夏季

改用。您始终可以放弃日期部分。只需使用
start\u time::time
即可从
timestamptz
获取本地时间。或者用来转换到你的时区

通常,要自动考虑DST,请使用时区名称而不是时区缩写。有关此相关问题和答案的更多说明:

在您的特定情况下,您可能会使用
America/Los_Angeles
(例如
timestamptz
):

我通过检查发现:

SELECT * FROM pg_timezone_names 
WHERE  utc_offset = '-07:00'
AND    is_dst;
时区处理的基本知识:

嗨,检查这个答案已经有人发布了关于它的问题,我希望这会帮助你。嗨,检查这个答案已经有人发布了关于它的问题,我希望这会帮助你。嗨,检查这个答案已经有人发布了关于它的问题,我希望这会帮助你。嗨,检查这个答案已经有人发布了关于它的问题,我希望我会帮助你的。