按字符串部分查询PostgreSQL的字符可变列

0 投票
1 回答
1971 浏览
提问于 2025-04-18 00:53

背景:我们正在使用Python和xlrd模块提取数百个Excel文档,并将结果存入Postgres 8.4数据库。问题是,Excel中的日期时间以一种奇怪的浮点数形式存储,这个数字是从1900年12月31日到现在的天数比例。通常,这个浮点数的最后几位数字会被截断,这可能导致我们的日期偏差多达35天。

http://office.microsoft.com/en-us/excel-help/datevalue-HP005209044.aspx

所以我们改变了处理方式,现在Excel文档中的日期时间以字符串的形式存储,格式是: 31-MAR-2014 00:00:00

这些字符串被提取后,存入Postgres数据库的字符可变列中。不过现在出现了查询的问题。我了解到一个可能的解决方案是添加一个额外的列,把日期转换成Postgres的日期时间值。

我的问题是,我能否在Postgres中根据字符串的某部分进行查询并返回结果?例如,如果我想提取2013年2月23日的所有记录,我可以这样做吗?

SELECT * FROM finance_table WHERE date_value contains? = "23-FEB-2013'

1 个回答

3

根据你的要求,这里是我以回答的形式给出的评论:

你需要使用 LIKE。在你的查询中,你可以使用类似这样的语句:WHERE date_value LIKE '%23-FEB-2014%'。这里的 % 表示可以匹配零个或多个字符,所以它非常适合用来查找包含某些内容的情况。另一个在 LIKE 中使用的通配符是 _,它表示匹配一个确切的字符。

撰写回答