我的团队在2个不同时区的相同数据库上运行相同的查询。查询返回不同的结果。我认为其中一个原因是我使用以下命令将时间戳列转换为日期: to_char(a.event_timestamp,'yyyy-mm-dd'::text) AS "date“ 此转换是否取决于系统的本地日期和时间?我正在测试数据库中以前的数据范围。
我得到了错误{ [error: date/time field value out of range: "1439728672"] ..。
我使用没有时区的时间戳作为列,并像下面这样执行查询,使用CURRENT_TIMESTAMP,我在另一个数据库/表上成功了,我不知道为什么?
列
"CreateDate" timestamp without time zone,
...
nodejs postgres
var query = 'INSERT INTO "Article" ("Content","CreateDa
使用下面的表定义: CREATE TABLE T1 (C1 TIMESTAMP DEFAULT NOW() ON UPDATE CURRENT_TIMESTAMP NOT
NULL); 当一行被更新时,C1被设置为当前的UTC时间戳。 这就是我想要的,但是我想知道这是否也是HSQLDB的预期行为,因为CURRENT_TIMESTAMP返回一个TIMESTAMP WITH TIME ZONE类型的值。
我使用一个将过期列与now()进行比较的查询来查询多个数据库服务器。问题是服务器的过期列之一是timestamp with time zone,其余的都是简单的date。我不能改变这一点,因为我没有管理权限,实际上我只是在查询视图。Postgres对我来说是很新的,所以我真的不明白日期和时间是如何相互作用的。
当我尝试使用timestamp with time zone查询服务器时,将timestamp转换为date:
...
WHERE
(
status_code = '30000'
OR status_code = '3000
我使用Postgres中的to_timestamp函数将整数值转换为时间戳。当我这样做的时候,时区被设置为+1,在存储的时间上增加了一个小时。
我位于英国,因此当前时区偏移量应为+0,而不是+1。
有人知道如何手动停止此操作/设置时区吗?
示例:
UPDATE my_table SET date_time_updated = to_timestamp(0) where id = 1;
SELECT date_time_updated FROM my_table WHERE id = 1; //Would expect midnight 01/01/1970
date_time_upda
首先,我知道关于这件事有很多线索,我可以用那里的解决方案,f.e。编写一个python函数,将datetime对象转换为我需要的时区,并将其作为过滤器添加到jinja2中。
但我想跳过这一步。
通常,PostgreSQL将日期时间对象保存在UTC中。
我所做的是:我将postgreSQL用于保存datetime对象的默认时区更改为:Europe/Berlin
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
这起作用了,SHOW timezone;告诉我它的Europe/Berlin。
但是Postgres所做的是
寻求帮助理解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
用这个撞到我的头。如何告诉Postgres不知情时间戳列的时区?我知道基于数据库中另一列的时区--时间戳值本身并不知情。
select
'2017-07-10 01:30:00'::timestamp as without_tz,
'2017-07-10 01:30:00'::timestamp at time zone 'America/New_York' as with_tz
-------------------------
without_tz: 2017-07-10 01:30:00
with_tz: 2017-07-
我有一个要求,需要将使用没有时区的时间戳的表更改为postgres中的时区时间戳。必需的表已经填充了旧数据,所以如果我尝试:
ALTER TABLE mytable ALTER COLUMN createdat TYPE timestamp with time zone;
这是否应改变所有现有的纪录?我看到了一个变化,但不确定这是否真的增加了一个时区条目(“欧洲/伦敦”)的记录。
记录不带时区:2017-05-15 02:19:02.443和when并添加带有时区的时间戳:2017-05-14 05:47:43.523+00
我可以通过在db上运行以下命令来确认当前时区:
SELECT c
我在从转储执行恢复时遇到问题。场景如下:我正在将一个环境从GCP迁移到AWS,目前我正在进行银行的迁移。
一个合作伙伴转储了GCP中的数据库,并将该文件放到了AWS S3上(我不知道他用来执行转储的命令)。
我在AWS环境中创建了一个EC2,并将转储文件从S3复制到EC2 (文件大小为13 GB)。我还创建了RDS来托管具有所有正确安全组设置的新数据库。
问题来了,我从服务器(EC2)连接到RDS,没有出现问题,但在使用pg_restore执行恢复时,我收到以下错误消息:pg_restore: too many command line arguments (first is "dbc
我正在使用Node.js和pg来查询Postgres数据库。我正在尝试执行以下查询: SELECT COUNT(*) FROM table_name WHERE date_time_added::date = some_date; some_date是我从Node.js传递的日期。 大多数情况下,我对此没有问题,因为两个日期/时间字符串的格式是相同的。但是,当引入时区时就会出现问题。由于我在英国,我们一年中的某些时间使用英国夏令时(GMT+1)。 当我将date_time_added从它的存储类型(timestamp with timezone)转换为date时,时间缺省为午夜。问题是,在B
假设我们有一个Postgres表:
CREATE TABLE public.observations (
id integer NOT NULL,
utc_created_at timestamp without time zone NOT NULL
)
如果我们有兴趣计算在特定UTC日期进行的观测,我们可以:
SELECT COUNT(observations.id),
DATE(utc_created_at) AS date_utc_created_at
GROUP BY DATE(date_utc_created_at);
但现在让我们说,我想按太平洋标准时
当我想把时间除以整数时,我得到了一个错误:ERROR: operator does not exist: timestamp with time zone / integer。
postgres中是否有将时间除以整数的函数?
例如:"2013-11-14 07:46:15+03:30"是带有时区的时间戳,我想要"2013-11-14 07:46:15+03:30" / 2 = "1991-12-08 17:38:07.5+03:30"的输出