首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL中的SQL时间戳

问PostgreSQL中的SQL时间戳
EN

Stack Overflow用户
提问于 2017-11-29 06:28:11
回答 1查看 989关注 0票数 2

我试图理解PostgreSQL保存timestamp数据类型的原始方式。根据我使用的客户端,我得到了两个不同的结果:

1. psql

代码语言:javascript
复制
# SELECT date_incorporated FROM client;

   date_incorporated    
------------------------
 2017-06-14 19:42:15-04

2. 记录 python模块

代码语言:javascript
复制
rows = db.query('SELECT date_incorporated FROM client')
print(rows[0])
# {"date_incorporated": "2017-06-14T19:42:15-04:00"}

由于psql接口和记录模块都应该将原始数据还给我,我不明白为什么它们给我的时间戳格式不同。

到目前为止,我看到的两个不同之处是T_s位于https://github.com/kennethreitz/records版本中日期和时间之间的中间,以及它在字符串末尾显示时区的不同方式。

他们中的一个在改变它吗?哪一个是显示真实数据的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-29 09:13:18

https://www.postgresql.org/docs/current/static/datatype-datetime.html

所有时区感知的日期和时间都存储在UTC内部。在显示给客户端之前,它们在TimeZone配置参数指定的区域中转换为本地时间。

https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT

日期/时间类型的输出格式可以设置为四种样式之一: ISO 8601、SQL (Ingres)、传统POSTGRES (Unix日期格式)或德语。默认的是ISO格式。

例:

代码语言:javascript
复制
t=# select now();
              now
-------------------------------
 2017-11-29 09:07:31.716276+00
(1 row)

t=# set datestyle to SQL;
SET
t=# select now();
              now
--------------------------------
 11/29/2017 09:07:52.341416 UTC
(1 row)

这样就节省了时间,而不是返回的方式。至少不是大赦。你可以在一定程度上控制它如何返回给你的客户。psql不处理时间。但是python有。我相信不是records,而是python本身

8601

T是表示法的时间分量之前的时间指示符。

而且T绝对不是由postgres自己添加的(除非您故意用to_char格式化日期)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47546388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档