gpt4 book ai didi

javascript - 使用时间查询行 - postgresql

转载 作者:行者123 更新时间:2023-12-03 01:32:31 25 4
gpt4 key购买 nike

目前,我有一个简单的查询,可以从数据库中获取属于特定联赛的赛程,然后按开球时间排序。

response = await pool.query('SELECT * FROM fixtures WHERE league_name = $1 ORDER BY kick_off ASC', [leagueName]);

现在,如果我想对此进行扩展并返回即将到来或正在进行的赛程(因此现在可以说,时间之上有 2 小时的缓冲区),我应该查看哪些查询? kick_off 时间存储为 VARCHAR,即 15:0019:00

我正在考虑用 javascript 从用户浏览器中获取时间并传递它并以这种方式进行比较,但是时区会让这变得棘手,对吧?所以我的想法是在服务器上进行,这样我就知道它是一致的?

不过我不确定这些查询

如果我的假设有误,很乐意在这里纠正并学习

谢谢

最佳答案

将时间存储为 varchar 会使这变得不必要的困难(几乎不可能)。原因是您的数据库不将其理解为时间,因此您确实必须推出自己的时间排序功能。呃。

您需要做的是将 kick_off 更改为 TIME、TIMESTAMP 甚至 TIMESTAMP WITH TIMEZONE。那么你的查询看起来会像:

SELECT * FROM fixtures 
WHERE league_name = $1
AND kick_off > NOW()-interval '2 hour'
AND kick_off < NOW()+interval '2 hour'
ORDER BY kick_off ASC;

无需关心浏览器的时间,您的数据库已经知道现在是什么时间!

(注意,我假设一场比赛需要 2 小时,但我不确定所讨论的运动是什么,即使我是,我也不确定平均比赛时长。更改 now( )- 适合。)

关于javascript - 使用时间查询行 - postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com