我有一个Django (v1.10.6)项目,其中包含一些带有日期时间字段的模型,例如:
created_at = models.DateTimeField(auto_now_add=True)
存储在没有时区信息的PostgreSQL数据库中:
created_at timestamp without time zone NOT NULL
postgresql.conf
timezone = 'UTC'
我希望我的应用程序的所有日期都以America/Bogota时区显示(它不应该依赖于用户的实际时区),因此我的settings.py文件具有以下配置:
TIME_ZONE =
如何从PostgreSQL中的timestamp中获取最多几分钟的日期和时间,而不是秒。我既需要时间,也需要日期。
例如:
2000-12-16 12:21:13-05
从这里我需要
2000-12-16 12:21 (no seconds and milliseconds only date and time in hours and minutes)
从带有时区字段的时间戳中,例如update_time,我如何使用PostgreSQL select查询获取日期和时间。
请帮帮我。
这是我第一次用PostgreSQL试用Rails。我感到困惑的是,在我通常看到的关于存储绝对时间的列的代码中缺少timestamp with timezone使用。一个主要的例子是,它存储列-- datetime列,它在PostgreSQL中转换为timestamp with out timezone。
我认为这是一种糟糕的做法,因为timestamp with out timezone可能意味着任何时区。如果您是从另一个应用程序访问数据库,则不知道在哪个时区使用时间戳引用而不查看Rails。它只是变成了分散的混乱。
是否有任何方法可以在用于timestamp with time zone的A
我使用的是django模型。django设置中的时区为UTC。并通过做一些算术来构造时间戳。
return queryset.annotate(
**{f"server_time":RawSQL(
f'''
SELECT TO_TIMESTAMP((FLOOR((EXTRACT(EPOCH FROM "{gmdts_table}"."date_key" AT TIME ZONE %s) + %s) / %s)::INTEGER * %s
我想在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:0
Unix时间戳是从1970年1月1日午夜开始的秒数。
如何从PostgreSQL获得正确的unix时间戳?
与currenttimestamp.com和timestamp.1e5b.de相比,我无法从PostgreSQL获得预期的时间:
这将返回正确的时间戳:
SELECT extract(epoch from now());
虽然这并不是:
SELECT extract(epoch from now() at time zone 'utc');
我住在UTC +02时区。从PostgreSQL获得当前unix时间戳的正确方法是什么?
这将返回正确的时间和时区:
SELECT
我正在构建一个应用程序,它需要处理不同的时区,包括夏时制时区。我使用Postgressql的时间戳(带有时区数据类型)存储所有日期/时间,并且所有日期/时间都存储在UTC时区(我在postgresql.conf中修改了postgresql.conf条目)。
下面是我创建的一个示例表:
CREATE TABLE category_city
(
category_city_id serial NOT NULL,
appt_start_time timestamp(0) with time zone,
appt_end_time timestamp(0) with time zone,
appt_d
通过使用PostgreSQL Python模块psycopg2,我希望找到结束时间在某个时间戳之前的行。我试图在带有cursor.execute(…)的SQL查询上使用… where end_time < %s来实现这一点,其中%s被带有时区的datetime.datetime对象替换。psycopg2生成的SQL是:
select * from my_table where end_time < '2014-05-01T13:00:00+00:00'::timestamptz;
返回如下所示的一行:
id | start_time |
首先,我知道关于这件事有很多线索,我可以用那里的解决方案,f.e。编写一个python函数,将datetime对象转换为我需要的时区,并将其作为过滤器添加到jinja2中。
但我想跳过这一步。
通常,PostgreSQL将日期时间对象保存在UTC中。
我所做的是:我将postgreSQL用于保存datetime对象的默认时区更改为:Europe/Berlin
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
这起作用了,SHOW timezone;告诉我它的Europe/Berlin。
但是Postgres所做的是
我试图理解AT TIME ZONE的行为,在这方面我发现Server和PostgreSQL之间有一些奇怪的行为差异。
为了演示起见,我产生了两个查询,一个用于Server,另一个用于PostgreSQL。
Server查询:
SELECT
[LocalTime],
[LocalTime] AT TIME ZONE 'W. Europe Standard Time' AS [LocalTimeWithOffset],
([LocalTime] AT TIME ZONE 'W. Europe Standard Time') AT TIME ZONE