【发布时间】:2019-07-20 20:40:14
【问题描述】:
我在 PostgreSQL SQL 中查询两个日期范围之间的数据,但它没有给我预期的结果。
select
pi_serial,
amount_in_local_currency,
status,
proforma_invoice_date
from proforma_invoice
where created_by = 25
and proforma_invoice_date BETWEEN '03/01/2018' and '09/03/2018'
order by proforma_invoice_date
现在查看查询和列形式发票日期。在此查询中,我正在搜索 03/01/2018 和 09/03/2018 之间的数据。日期格式为 (DD/MM/YYYY) 并且字符不同。我在这张照片中得到的结果。它只是根据唯一的一天给我结果,而不是整个日期格式。我尝试了很多日期转换,字符因日期而异。但我没有得到任何预期的结果
【问题讨论】:
-
几乎所有 Postgres 版本都不需要添加标签。如果您想要特定版本的答案(例如,您使用的是过时甚至不受支持的版本),那么请只为 that 版本添加标签
-
从不,永远不要将 DATE 值存储在
varchar列中。只是不要。您的查询不起作用的原因是错误的数据类型选择。您应该将其转换为真正的DATE列。 -
真的你应该考虑改变你的数据类型。如果你使用varchar作为日期,你也可以插入lalala,它会给你带来问题......你会失去使用日期数据类型的性能。 . 你可以阅读这个sqlblog.org/2009/10/12/…
标签: postgresql