如何在PostgreSQL中查询日期等于当前日期的数据库记录
在PostgreSQL中筛选日期等于当前日期的记录
直接可用的解决方案
你给出的查询语句已经准确命中需求啦!针对葡萄牙语命名的data字段(对应英文的date字段),要筛选出日期等于当前日期的记录,这个写法完全正确:
SELECT id, data, dia, mes, ano, fornecedor, doc, valor_líquido, total FROM public.fluxo_pagamentos WHERE data = current_date;
关键细节说明
current_date是PostgreSQL的内置函数,会返回当前会话时区下的纯日期值(格式为YYYY-MM-DD),完美匹配data字段的日期类型。- 要是你的
data字段存储的是timestamp/timestamp with time zone类型(包含具体时间时分秒),直接用= current_date可能会漏掉那些时间部分不为0的记录。这种情况下推荐用范围查询,既准确又能利用字段上的索引:
-- 适配timestamp类型字段的优化写法 SELECT id, data, dia, mes, ano, fornecedor, doc, valor_líquido, total FROM public.fluxo_pagamentos WHERE data >= current_date AND data < current_date + INTERVAL '1 day';
额外提示
注意确认会话时区和数据库存储的日期时区一致,避免因时区偏移导致筛选结果不符合预期。如果需要固定时区查询,可以指定时区,比如:
-- 以巴西圣保罗时区为例 SELECT id, data, dia, mes, ano, fornecedor, doc, valor_líquido, total FROM public.fluxo_pagamentos WHERE data = current_date AT TIME ZONE 'America/Sao_Paulo';
内容的提问来源于stack exchange,提问作者Leogreen
相关产品推荐
相关产品推荐

