我是PostgreSQL的新手,几年来在一家只使用MySQL的公司里,我对TIMESTAMP类型有点措手不及:
CREATE TABLE example (
example_id SERIAL PRIMARY KEY,
time_utc TIMESTAMP
);
INSERT INTO example (time_utc) VALUES (NOW());
SELECT * FROM example;
example_id | time_utc
------------+----------------------------
1 | 2017-11-02 21:37:26.592814
我知道我可以简单地将字段转换为不太精确的形式:
SELECT example_id, time_utc::timestamp(0)
我也知道我可以在表定义中声明精度:
time_utc TIMESTAMP(0)
但有没有办法将此更改为所有TIMESTAMP
字段的默认精度?同样,有没有办法改变NOW()
的行为以匹配这种格式(包括缺少时区)?
例如在MySQL中:
SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2017-11-02 21:41:26 |
+---------------------+
的PostgreSQL:
SELECT NOW();
now
-------------------------------
2017-11-02 21:42:48.855801+00
老实说,我过去任何时候都无法想到我希望MySQL的时间戳更精确,而且不太精确的形式在客观上更容易看到。这是一个简单的配置更改,还是我需要在转换到PostgreSQL时进行处理和处理?
由于
答案 0 :(得分:2)
用户可以使用
SET datestyle
选择日期/时间样式 命令,postgresql.conf
中的DateStyle参数 配置文件,或PGDATESTYLE environment variable
上的 服务器或客户端。
https://www.postgresql.org/docs/current/static/datatype-datetime.html#datatype-datetime-output
可用选项(掩码)也列在同一参考中。但他们可能无法准确提供您想要的东西。除此之外,你有to_char()函数
格式化函数to_char(参见第9.8节)也可用作 一种更灵活的格式化日期/时间输出的方法。
https://www.postgresql.org/docs/current/static/functions-formatting.html