用时间查询一行 - postgresql
Querying a row with times - postgresql
目前我有一个简单的查询,可以从我的数据库中获取属于特定联赛的赛程,然后按开赛时间排序。
response = await pool.query('SELECT * FROM fixtures WHERE league_name = ORDER BY kick_off ASC', [leagueName]);
现在,如果我想扩展这个和 return 即将到来或正在播放的装置(所以现在可以说在时间之上有 2 小时的缓冲),我应该查看哪些查询? kick_off
时间存储为 VARCHAR
,因此 15:00
或 19:00
。
我正在考虑使用 javascript 从用户浏览器中获取时间并将其传递并以这种方式进行比较,但是时区会使这变得棘手,对吗?所以我的想法是在服务器上做,所以我知道它是一致的?
虽然我不确定查询
如果我的假设有误,欢迎在这里指正学习
谢谢
将时间存储为 varchar 会使这变得不必要地困难(边界不可能)。原因是您的数据库不理解它的时间,因此您真的必须推出自己的时间排序功能。呃.
您需要做的是将kick_off更改为TIME、TIMESTAMP,甚至是TIMESTAMP WITH TIMEZONE。那么您的查询看起来像:
SELECT * FROM fixtures
WHERE league_name =
AND kick_off > NOW()-interval '2 hour'
AND kick_off < NOW()+interval '2 hour'
ORDER BY kick_off ASC;
无需考虑浏览器的时间,您的数据库已经知道现在几点了!
(注意,我假设一场比赛需要 2 个小时,但我不确定所讨论的运动是什么,即使我是,我也不确定平均比赛时长。更改现在()-适合。)
目前我有一个简单的查询,可以从我的数据库中获取属于特定联赛的赛程,然后按开赛时间排序。
response = await pool.query('SELECT * FROM fixtures WHERE league_name = ORDER BY kick_off ASC', [leagueName]);
现在,如果我想扩展这个和 return 即将到来或正在播放的装置(所以现在可以说在时间之上有 2 小时的缓冲),我应该查看哪些查询? kick_off
时间存储为 VARCHAR
,因此 15:00
或 19:00
。
我正在考虑使用 javascript 从用户浏览器中获取时间并将其传递并以这种方式进行比较,但是时区会使这变得棘手,对吗?所以我的想法是在服务器上做,所以我知道它是一致的?
虽然我不确定查询
如果我的假设有误,欢迎在这里指正学习
谢谢
将时间存储为 varchar 会使这变得不必要地困难(边界不可能)。原因是您的数据库不理解它的时间,因此您真的必须推出自己的时间排序功能。呃.
您需要做的是将kick_off更改为TIME、TIMESTAMP,甚至是TIMESTAMP WITH TIMEZONE。那么您的查询看起来像:
SELECT * FROM fixtures
WHERE league_name =
AND kick_off > NOW()-interval '2 hour'
AND kick_off < NOW()+interval '2 hour'
ORDER BY kick_off ASC;
无需考虑浏览器的时间,您的数据库已经知道现在几点了!
(注意,我假设一场比赛需要 2 个小时,但我不确定所讨论的运动是什么,即使我是,我也不确定平均比赛时长。更改现在()-适合。)