【发布时间】:2011-07-01 01:23:53
【问题描述】:
有没有办法改变 Postgres 中日期的默认格式?
通常当我查询 Postgres 数据库时,日期显示为 yyyy-mm-dd hh:mm:ss+tz,例如 2011-02-21 11:30:00-05。
但是一个特定的程序日期出来的是yyyy-mm-dd hh:mm:ss.s,也就是说,没有时区,它显示十分之一秒。
显然有些东西正在改变默认日期格式,但我不知道是什么或在哪里。我不认为它是服务器端配置参数,因为我可以使用不同的程序访问同一个数据库,并且我可以使用时区获取格式。
我很在意,因为除了更改格式之外,它似乎还忽略了我的“设置时区”调用。所有时间都是美国东部标准时间。
附加信息:
如果我写“从某个表中选择某个日期”,我会得到“无时区”格式。但如果我写“select to_char(somedate::timestamptz, 'yyyy-mm-dd hh24:mi:ss-tz')”,那么时区会按我的预期工作。
在我看来,这听起来像是将所有时间戳隐式设置为“to_char(date::timestamp, 'yyyy-mm-dd hh24:mi:ss.m')”。但是我在文档中找不到任何关于如果我愿意我将如何执行此操作的内容,我也无法在代码中找到任何似乎可以执行此操作的内容。虽然我不知道要寻找什么,但这并不能证明太多。
没关系:'(
我发现了我的问题。我在想我正在直接查看从数据库返回的字符串。但我忽略了它正在将其作为时间戳读取,然后将时间戳转换为字符串。这被隐藏在一个名为“getString”的函数中,这让我很失望。我以为它是 ResultSet.getString,但它实际上是我们自己的同名函数。哎呀。哪个白痴写了这个功能?!哦,原来是我……
感谢所有试图提供帮助的人。我会为你的麻烦给你一个赞成票。
【问题讨论】:
-
因此,请将您的发现添加为答案,并接受它,这样这个问题就会以一个接受的答案结束。
标签: sql postgresql date