如何设置intervalstyle = iso_8601然后在golang中运行select查询

时间:2018-05-17 13:10:49

标签: sql postgresql go pq

我有一个包含CREATE TABLE validity ( window INTERVAL NOT NULL ); 列的表格,就像这样。

iso_8601

假设存储的值是' P3DT1H'以3 days 01:00:00 格式。 当我尝试读取该值时,它以常规的postgres格式出现。

iso_8601

但是我想要@FeignClient(name = "hello-service", url = "http://hello-service") public interface HelloService { @RequestMapping(method = RequestMethod.GET, value = "/hello") String hello(@PathVariable("name") String name); }格式的值。我怎样才能实现它?

2 个答案:

答案 0 :(得分:1)

您可以使用SET intervalstyle查询并将样式设置为_, err := s.db.Exec("SET intervalstyle='iso_8601'") res, err := s.db.Query("select interval '1d1m'") // res contains a row with P1DT1M 。然后,当您输出结果时,它们将采用ISO 8601格式。

intervalstyle

如果您正在寻找一种方法来更改服务器级别上所有会话的-- connect to your psql using whatever client, e.g. cli and run SHOW config_file; -- in my case: /usr/local/var/postgres/postgresql.conf ,您可以在配置文件中更新它:

intervalstyle = 'iso_8601'

编辑此文件并添加以下行:

intervalstyle

在我的情况下,该文件已经有postgres注释掉的行,其值为{{1}}。您应该更改它并重新启动服务。

这样,每次运行查询时都不必从golang更改样式。

答案 1 :(得分:1)

intervalstyle

你可能是looking for so=# set intervalstyle to iso_8601; SET so=# select w From validity; w -------- P3DT1H (1 row)

content

每个事务/会话/角色/ db / cluster

肯定it can be set