我是一名 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
).
顺便说一句,我已经修改了大小写以符合推荐的做法(关键字大写,标识符小写)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)