我有一些时间戳存储在Postgres类型的timestamp without time zone中。
我将使用时间戳2013-12-20 20:45:27作为示例。我的意思是这代表了UTC的时间戳。
在psql中,如果运行查询SELECT start_time FROM table_name WHERE id = 1,就会得到时间戳字符串,就像预期的那样:2013-12-20 20:45:27。
但是,如果在我的Node应用程序中,我使用节点-postgres库来运行相同的查询,我将在本地时区获得一个时间戳:Fri Dec 20 2013 20:45:27 GMT-0600 (CST)。这是一
寻求帮助理解Postgres时区转换和比较
查询
SELECT
now()
, ( now() at time zone 'AEDT' ) AS now_AEDT
, ( ( now() at time zone 'AEDT' ) at time zone 'AEDT' ) AS now_AEDT_AEDT
, ( now() at time zone 'UTC' ) + interval '1' second
> ( now() at time zone
首先,我知道关于这件事有很多线索,我可以用那里的解决方案,f.e。编写一个python函数,将datetime对象转换为我需要的时区,并将其作为过滤器添加到jinja2中。
但我想跳过这一步。
通常,PostgreSQL将日期时间对象保存在UTC中。
我所做的是:我将postgreSQL用于保存datetime对象的默认时区更改为:Europe/Berlin
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
这起作用了,SHOW timezone;告诉我它的Europe/Berlin。
但是Postgres所做的是
是否有任何约定可以在数据库中添加本地时区(无论用户将其设置为什么)?
例如,我可以为UTC时间做以下操作:
2014-01-01 01:02:03Z
下面的意思是当地时间吗?
2014-01-01 01:02:03L
或者其他一些后缀,它可以获取用户的系统时间,也可以从可以设置的变量中获取它?例如,类似于(Postgres)的内容:
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
我认为信息技术的两大祸害之一是时间戳和时区(另一种是字符编码),其中一种不断地被偶然发现.
在这方面,我目前遇到了一个与存储到PostgreSQL数据库的Java应用程序中的不同时间戳有关的问题。
为了保持简单,假设有以下表:
CREATE TABLE ts_test
(
id integer NOT NULL,
utc timestamp without time zone,
local timestamp with time zone,
CONSTRAINT pk PRIMARY KEY (id)
)
所以,我必须存储一个UTC时间戳和一个本地时间戳,在我的例子中是中欧夏季
我有一个rails应用程序,它在postgres db上工作。我有一个名为UserTimings的模型,其中有两个字段from_time和to_time。
t.time "from_time"
t.time "to_time"
我预计时间将以完整的UTC格式存储,并提供时区信息。过了一会儿,我意识到数据库有这种SQL查询来创建表。
from_time time without time zone,
to_time time without time zone,
我不想这样。我想用时区存储。我想要UTC时间中的+0530东西,我不知道rails应用
我有一个简单的Postgres测试表的id,时间戳与时区。下面的测试和输出应该是不言自明的,但概括地说,我插入了带有-6偏移量的时间戳行。它被正确地插入到数据库中,然后用相同的时间加载出数据库,但是偏移量是错误的,特别是Z而不是-6。
我尝试将我的数据库设置为UTC,当我在命令行手动选择时,它正确地显示了UTC的时间。将数据库设置为山区,它显示偏移量为-6的预期时间。
通过在jOOQ中执行的语句将数据库强制到不同的时区似乎没有什么作用。
context.execute( "set timezone TO 'GMT';" ); // this has no eff
当我的postgres服务器位于美国/纽约时区,或者我使用SET SESSION TIME ZONE 'America/New_York'时,generate_series尊重夏时制的变化,我可以得到我想要的适当的时代或时间点:
postgres=# SET SESSION TIME ZONE 'America/New_York';
SET
postgres=#
postgres=# with seq(ts) as (select * from generate_series('2018-11-03 00:00:00.000 -04:00', &
我将在我的PostgreSQL数据库中保存日期和时间,并以适当的格式获取并显示给用户。
假设应用程序用户位于伊朗,并使用Jalali日期/时间系统。在上半年,伊朗时间是UTC+04:30,但在剩下的一年里,它是UTC+03:30。事实上,夏令时在伊朗是使用的。
重要:有时会做出决定,并将数据库服务器的位置从伊朗更改到欧洲或其他地方。
现在我有一些问题:
哪种数据类型更方便保存数据??TIMESTAMP (TIMESTAMP WITHOUT TIMEZONE)还是TIMESTAMPZ (TIMESTAMP WITH TIME ZONE)?
哪种数据类型更方便,只节省时间?TIME还是TI
我必须读取像'20190608070000‘这样的字符串作为UTC给出的时间戳。有什么简单的方法可以做到这一点吗? 此参数采用UTC,但需要格式化输入: postgres=# show time zone;
TimeZone
----------
CET
(1 Zeile)
postgres=# select timestamp without time zone '2019-06-08 07:00:00' at time zone 'UTC';
timezone
------------------------
2019-06
这似乎是一个常见的问题,所以我可能遗漏了一些明显的东西。使用Joda Time,我想用时区保存日期。如果我没有使用JPA,我会想做一些类似这样的事情来保存和检索时间戳:
create table test_dates
(
zone varchar(50),
ts_with_time_zone timestamp with time zone
);
insert into test_dates values ('UTC', '2012-08-12 12:34:56 UTC');
insert into test_dates values ('MS
我正在写一个基于web的前端到一个数据库(PHP/Postgresql),其中我需要存储各种日期/时间。时间意味着总是以本地时间在客户端输入,并以本地时间显示。出于存储目的,我将所有日期/时间存储为整数(UNIX时间戳),并将其规范化为UTC。一个特定的字段有一个限制,即填写的时间戳不允许在将来出现,所以我尝试使用数据库约束...
CONSTRAINT not_future
CHECK (timestamp-300 <= date_part('epoch', now() at time zone 'UTC'))
在浏览器和服务器之间时间稍微不同步
我有一个表,它的time列定义为
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
我的数据库和服务器具有时区UTC
Tue Apr 20 18:22:50 UTC 2021
当我运行以下查询时
SELECT id, time AT TIME ZONE 'utc' AS "TZ: UTC", time AT TIME ZONE 'Europe/Berlin' AS "TZ: Berlin" FROM orders ORDER BY id DESC;
结果至
id | TZ:
我有一些在Postgres表中插入时间戳的代码。下面是插入时间戳的字段的定义:
datelast timestamp without time zone
我使用以下Java代码来更新字段中的数据:
PreparedStatement sqlStatement = connection.prepareStatement(
"UPDATE datetest SET datelast = ? WHERE id = ? ");
sqlStatement.setTimestamp(1, new java.sql.Timestamp((new Date()).get
存储日期时间的实用方法是什么,这样我就可以让用户查看/查询自己的本地时间的数据,同时保留有关原始日期时间的信息。
基本上,用户希望能够查询(从他们自己的本地时间)从各个时区的系统收集的数据。但偶尔,他们想知道数据是在原始系统中的18:00创建的。当来自世界不同地区的用户就同一事件进行交流时,它会有所帮助。
User1: What? We don't have any data for 20:00
User2: Dude, it says 20:00 right there on my screen.
User1: Wait, what timezone are you? What
给定postgreSQL中的表,如:
CREATE TABLE events (
name VARCHAR(50),
time TIMESTAMP -- No timezone, supposed UTC
)
我正在插入星火事件:
val timestamp = new Timestamp(1000000000000L)
val df = Seq(("test",timestamp)).toDF("name", "time")
我使用"timestamp with time zone“列类型并设置日期时间,如下所示: INSERT INTO mytable(col1)
VALUES(timestamp with time zone '2020-07-16 17:45:00.000000+00'); 每当我尝试检索我的DateTimes时,它们都会被转换为“本地”类型。 这不是我想要的,它设置为UTC日期时间,我希望它作为UTC返回,我不希望它转换为本地,进入数据库,也不回来…这样做就不可能在不引起歧义的情况下到达UTC。 我已经尝试设置了"PGTZ“环境变量;当连接打开时,我还执行了
我可以欣赏我的Postgres语法的第二双眼睛。
数据库在UTC中存储时间戳。我正在尝试从UTC转换为东部夏令时EDT,但是输出不准确。
下面是我的语法:
SELECT
to_char(((timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'EDT'), 'MM/DD/YYYY HH24:MI')
FROM table_name
记录TimeStamp:
09/10/2016 12:00
查询输出:
09/10/2016 16:00
期望产出:
09/10/2016 08:00
谢谢你的帮助。