pertanyaan postgres tidak berfungsi dengan format masa '2005-06-10 23:00:00 +0000 UTC'

WBOY
Lepaskan: 2024-02-09 12:51:07
ke hadapan
555 orang telah melayarinya

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
Salin selepas log masuk

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

created > 2009-11-10 23:00:00 +0000 utc
Salin selepas log masuk

上面是我在 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.
Salin selepas log masuk

Atas ialah kandungan terperinci pertanyaan postgres tidak berfungsi dengan format masa '2005-06-10 23:00:00 +0000 UTC'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!