gpt4 book ai didi

PostgreSQL-过滤日期范围

转载 作者:行者123 更新时间:2023-11-29 11:12:48 25 4
gpt4 key购买 nike

我是一名 SQL 开发人员,大部分时间都在 MSSQL 上度过。 我正在寻找一种更好的方法来过滤 PostgreSQL 数据库中的“没有时区的时间戳”字段。

我正在使用:

Where 
DateField >= '2010-01-01' and
DateField < '2012-01-01'

但考虑到我不是语法方面的专家,我不得不认为有更好的方法。

有什么建议吗?谢谢。

最佳答案

您的解决方案很好。不过,如果日期是文字,我更愿意:

WHERE datefield >= '2010-01-01 00:00:00' 
AND datefield < '2012-01-01 00:00:00'

这执行完全相同,但更易于维护,因为它清楚地表明每个文字“日期”是时间戳,而不是日期。例如,假设某个时候有人将您的查询更改为以下内容

    AND  datefield <=  '2012-01-01'

...期望(但未能)在查询中包含全天“2012-01-01”。使用后面的语法,意图更加明确,避免了这种混淆。

为了更清楚(可能太冗长),您可以进行显式转换:

WHERE datefield >= '2010-01-01 00:00:00'::timestamp 
AND datefield < '2012-01-01 00:00:00'::timestamp

出于类似的原因(潜在的数据类型混淆),我不会在这里使用 to_date(),也不会使用 to_timestamp()(它返回一个 timestamptz).

顺便说一句,我修改了大小写以符合推荐的做法(关键字大写,标识符小写)

关于PostgreSQL-过滤日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15817871/

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