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
但是当我写下面的时间戳字符串时,它似乎不起作用
created > 2009-11-10 23:00:00 +0000 utc
上面是我在 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!