2017-06-14 29 views
3

如果我查询包含2017年(或任何其他年份)的条目的时间戳列,我会得到0个结果。pg_query like timestamp

在w_presse_erscheinung的数据是 “无时区的时间戳”,看起来像这样的例子:2017年6月1日00:00:00

我认为有一些错误与查询的LIKE部分...

我的查询看起来是这样的:

 $result = pg_query(" 
     SELECT 
     name, 
     w_presse_link, 
     w_presse_erscheinung, 
     w_presse_quelle, 
     description 

     FROM adempiere.w_presse 
     WHERE isactive ='Y' 
     AND description='PS' AND w_presse_erscheinung LIKE '%2017%' 
     ORDER BY w_presse_erscheinung 
     DESC 
     ") 
+2

'LIKE'用于字符串,不适用于日期或时间戳 –

回答

2

而不是依赖于字符串转换的,你可以明确地提取一年的时间戳记:

EXTRACT(YEAR FROM w_presse_erscheinung) = 2017 
+0

就是这样。谢谢! – user2164882

1

你不能像这样使用时间戳字段。要么将timestamp字段类型化为varchar,然后使用like或者使用extract函数来匹配字段中的年份。

+1

铸造为了使用像是一个非常糟糕的建议 –