gpt4 book ai didi

postgresql - 昨天时间和今天时间之间的postgres查询

转载 作者:行者123 更新时间:2023-11-29 11:46:57 24 4
gpt4 key购买 nike

我是 postgres 的新手,我正在努力解决我必须编写的查询以获取昨天 18:00 和今天 18:00 之间的所有记录。

到目前为止,我已经尝试过这样的谓词,但它似乎并不正确,因为在查询运行时我没有得到想要的结果...

WHERE 
recon_vr.paymentDateTime >= CURRENT_DATE -1 + '18:00:00.000000'::time
AND
recon_vr.paymentDateTime >= CURRENT_DATE + '18:00:00.000000'::time

有人可以帮我解决这个问题吗?

此外,我正在从一个集成工具运行查询,我发现该工具有时会出现::语法问题。因此,如果没有该解决方案,我们将不胜感激。但如果不存在,那也没关系。

提前致谢

最佳答案

您的查询大体上是正确的,但有一个错误,错误的运算符 – 您使用了 2 >=而不是 >=<= .

所以正确的是:

WHERE 
recon_vr.paymentDateTime >= CURRENT_DATE - 1 + '18:00:00.000000'::time
AND
recon_vr.paymentDateTime <= CURRENT_DATE + '18:00:00.000000'::time

此外,您可以使用 BETWEEN :

WHERE 
recon_vr.paymentDateTime BETWEEN CURRENT_DATE - 1 + '18:00:00.000000'::time AND CURRENT_DATE + '18:00:00.000000'::time

避免 ::time 出现问题你可以这样写:

WHERE 
recon_vr.paymentDateTime BETWEEN CURRENT_DATE - 1 + TIME '18:00' AND CURRENT_DATE + TIME '18:00'

...或者像这样:

WHERE 
recon_vr.paymentDateTime BETWEEN CURRENT_DATE - 1 + INTERVAL '18h' AND CURRENT_DATE + INTERVAL '18h'

顺便说一句,在 Postgres 中使用 CamelStyle 对象名称会导致一些令人不快的问题——默认情况下,所有名称都不区分大小写(因此您可以轻松地在您的情况下编写 recon_vr.paymentDateTime),除非您使用双引号创建时间。如果是这样,您将需要永远使用双引号(recon_vr."paymentDateTime" 为您提供纯 Camel 风格的列名,但您需要使用双引号来处理它,这不太方便)。

关于postgresql - 昨天时间和今天时间之间的postgres查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45051379/

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