Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更改postgres日期格式_Sql_Postgresql_Date - Fatal编程技术网

Sql 更改postgres日期格式

Sql 更改postgres日期格式,sql,postgresql,date,Sql,Postgresql,Date,有没有办法改变Postgres中日期的默认格式 通常,当我查询Postgres数据库时,日期显示为yyyy-mm-dd hh:mm:ss+tz,如2011-02-21 11:30:00-05 但是有一个特定的程序,日期是yyyy-mm-dd hh:mm:ss.s,也就是说,没有时区,显示十分之一秒 显然有什么东西在改变默认的日期格式,但我不知道是什么或在哪里。我不认为这是一个服务器端配置参数,因为我可以用不同的程序访问同一个数据库,并且我得到了时区的格式 我之所以在乎,是因为除了更改格式外,它似

有没有办法改变Postgres中日期的默认格式

通常,当我查询Postgres数据库时,日期显示为yyyy-mm-dd hh:mm:ss+tz,如2011-02-21 11:30:00-05

但是有一个特定的程序,日期是yyyy-mm-dd hh:mm:ss.s,也就是说,没有时区,显示十分之一秒

显然有什么东西在改变默认的日期格式,但我不知道是什么或在哪里。我不认为这是一个服务器端配置参数,因为我可以用不同的程序访问同一个数据库,并且我得到了时区的格式

我之所以在乎,是因为除了更改格式外,它似乎还忽略了我设置的时区调用。任何时候都是如此

其他信息:

如果我写selectsomedatefromsometable,我得到的是无时区格式。但如果我将select写入_charsomedate::timestamptz,'yyyy-mm-dd hh24:mi:ss tz',那么时区的工作方式与我预期的一样

对我来说,这听起来像是将所有时间戳隐式设置为_chardate::timestamp,'yyyy-mm-dd-hh24:mi:ss.m'。但是我在文档中找不到任何关于如果我想这样做我将如何做的内容,在代码中也找不到任何似乎可以这样做的内容。虽然我不知道该找什么,但这证明不了什么

没关系:'

我发现了我的问题。我想我是在直接查看从数据库返回的字符串。但我忽略了它是将其作为时间戳读取,然后将时间戳转换为字符串。这是埋在一个名为getString的函数中的,这让我很反感。我以为它是ResultSet.getString,但它实际上是我们自己的同名函数。哎呀。哪个白痴写的函数?!哦,是我


感谢所有试图帮忙的人。我会给你们每人一张赞成票,以补偿你们的麻烦。

我相信表列的指定方式是不同的。尝试以下变体:

timestamp
timestamp(0)   no millis
timestamptz    with timezone
timestamptz(0) with timezone, no millis

我认为表列的指定方式不同。尝试以下变体:

timestamp
timestamp(0)   no millis
timestamptz    with timezone
timestamptz(0) with timezone, no millis

您使用哪个客户端运行select语句?格式化输出是应用程序的责任,因此如果不知道使用哪个应用程序来显示数据,很难判断

假设您使用的是psql,则可以使用SET命令更改日期格式:

这本质上是一种更改配置参数的方法。此处记录了负责格式化数据的人员:

您使用哪个客户端运行select语句?格式化输出是应用程序的责任,因此如果不知道使用哪个应用程序来显示数据,很难判断

假设您使用的是psql,则可以使用SET命令更改日期格式:

这本质上是一种更改配置参数的方法。此处记录了负责格式化数据的人员:
丹尼尔告诉我把我的发现作为答案发布,并接受它来结束这个问题。好的

我发现我看到的不包含时区的日期格式不是直接来自Postgres的,而是我缺少的几个函数调用,它们将传入日期转换为java.util.Timestamp,然后从java.util.Timestamp转换为字符串。正是在从时间戳到字符串的转换中,时区默认为EST


在我自己卑微的辩护中,我的错误并不像听起来那么愚蠢-0我们在将结果读入列表的子类中执行查询,这样做是为了在输出之前修改查询结果。在本例中,我们添加了一组从存储列派生的列。然后我们有一组类似于JDBC函数的函数来从列表中提取数据,因此调用程序可以轻松地从直接处理查询切换到处理列表。当我在努力解决日期格式问题时,我没有意识到我不是在看真正的JDBC,而是在看模拟的JDBC调用。

Daniel告诉我把我的发现作为答案发布,然后接受它来结束问题。好的

我发现我看到的不包含时区的日期格式不是直接来自Postgres的,而是我缺少的几个函数调用,它们将传入日期转换为java.util.Timestamp,然后从java.util.Timestamp转换为字符串。正是在从时间戳到字符串的转换中,时区默认为EST

在我自己卑微的辩护中,我的错误并不像听起来那么愚蠢-0我们在将结果读入列表的子类中执行查询,这样做是为了在输出之前修改查询结果。在本例中,我们添加了一组从存储列派生的列。然后我们有一组类似于JDBC函数的函数
ns从列表中提取数据,因此调用程序可以轻松地从直接处理查询切换到处理列表。当我努力解决日期格式问题时,我没有意识到我不是在看真正的JDBC,而是在看模拟的JDBC调用。

但有趣的是,我的问题是,我在看相同的列,只是看两个不同的程序。根据程序的不同,我会得到不同的输出格式。这告诉我其中一个程序一定在做一些改变格式的事情。你怎么知道这个程序没有格式化日期值本身?唯一的官方程序是psql,所有其他软件都将这些值检索为日期值,软件可以随意格式化。不同的输出是什么样子的?但有趣的是,我的问题是,我在看相同的列,只是用两个不同的程序。根据程序的不同,我会得到不同的输出格式。这告诉我其中一个程序一定在做一些改变格式的事情。你怎么知道这个程序没有格式化日期值本身?唯一的官方程序是psql,所有其他软件都将这些值检索为日期值,软件可以随意对其进行格式化。不同的输出是什么样子的?我在Java程序中使用JDBC接口。当我说格式化输出时,我指的是当我以字符串形式读取时间戳时得到的结果。也就是说,我运行select transactiondate from…,然后在Java中,我在字段上使用ResultSet.getString,根据运行查询的程序得到不同的格式。这只提供了四种格式选择,并且没有一种格式有小数秒,也没有时区。或者我遗漏了什么?我不认为ResultSet.getString受Postgres会话设置的影响。如果您确实需要时间戳作为字符值,我建议您在查询中使用字符来控制格式。或者使用ResultSet.getTimestamp并使用SimpleDataFormat在Java程序中对其进行格式化a_horse_,名称为:请参阅我对自己问题的答案。简单地说:是的,我认为你是对的,没有这样的设置来改变格式。我对格式化是在哪里进行的感到困惑,我正在Java程序中使用JDBC接口。当我说格式化输出时,我指的是当我以字符串形式读取时间戳时得到的结果。也就是说,我运行select transactiondate from…,然后在Java中,我在字段上使用ResultSet.getString,根据运行查询的程序得到不同的格式。这只提供了四种格式选择,并且没有一种格式有小数秒,也没有时区。或者我遗漏了什么?我不认为ResultSet.getString受Postgres会话设置的影响。如果您确实需要时间戳作为字符值,我建议您在查询中使用字符来控制格式。或者使用ResultSet.getTimestamp并使用SimpleDataFormat在Java程序中对其进行格式化a_horse_,名称为:请参阅我对自己问题的答案。简单地说:是的,我认为你是对的,没有这样的设置来改变格式。我对格式设置的位置感到困惑。因此,请添加您的发现作为答案,并接受它,这样这个问题将以接受的答案结束。因此,请添加您的发现作为答案,并接受它,这样这个问题将以接受的答案结束。