Home > Backend Development > Golang > postgres query does not work with time format '2005-06-10 23:00:00 +0000 UTC'

postgres query does not work with time format '2005-06-10 23:00:00 +0000 UTC'

WBOY
Release: 2024-02-09 12:51:07
forward
587 people have browsed it

postgres 查询不适用于时间格式“2005-06-10 23:00:00 +0000 UTC”

php小编新一指出,在使用PostgreSQL数据库进行查询时,有时会遇到一个问题:对于时间格式为"2005-06-10 23:00:00 +0000 UTC"的数据,查询语句可能不适用。这是因为PostgreSQL对时间格式有一定的要求,而这个时间格式可能不符合其规范。为了解决这个问题,我们可以通过转换时间格式或使用特定的函数来进行查询,以保证查询结果的准确性。下面将详细介绍解决方法,帮助大家顺利查询到所需的数据。

问题内容

我的 postgres 表的架构

column type
id int
name string
created timestamp without timezone

现在我正在尝试获取在特定时间后创建的记录。在我的查询中,如果我编写如下条件,它会完美地工作

created > 2009-11-10 23:00:00 +0000
Copy after login

但是当我写下面的时间戳字符串时,它似乎不起作用

created > 2009-11-10 23:00:00 +0000 utc
Copy after login

上面是我在 go 中将 time.time 对象转换为字符串时获得的默认格式。 postgres 不支持或不理解后一种格式吗?

解决方法

不要使用 time.time.string() 因为"返回的字符串用于调试” 没有理由期望 go 的 time 值调试表示能够与 postgres(或任何其他软件)理解的任何内容相匹配。

让数据库驱动程序关心如何通过在查询中使用占位符并传递时间来对时间值进行编码。按原样传递时间值:

var t time.Time = ...

rows, err := db.Query("SELECT * FROM table WHERE created > $1", t)
// Since you're using timestamp without timezone you may want to use t.UTC(), t.Local(), or t.In(location) instead of just t.
Copy after login

The above is the detailed content of postgres query does not work with time format '2005-06-10 23:00:00 +0000 UTC'. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template