No se puede comparar con un LIKE un campo de una fecha, como si fuera una cadena de texto.
Lo que puedes hacer es, primero, convertir la fecha en una cadena de texto:
Using sql Syntax Highlighting
SELECT sum((sub*tir)) AS total FROM compras WHERE fecha_sale::text LIKE '2013-01-%';
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Con versiones 8.3 y anteriores, PostgreSQL hacía la conversión automática a texto, pero luego lo quitaron.
También puedes hacer truncamientos:
Using sql Syntax Highlighting
SELECT sum((sub*tir)) AS total FROM compras WHERE date_trunc('month', fecha_sale) = '2013-01-01';
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Lo que hace es truncar la fecha a múltiplo de mes, por lo que luego podemos ver si corresponde al primer día de ese mes. La ventaja de esta última solución es que es indexable (puedes crear un índice en una columna con esta función).
Otra opción, usando extracciones:
Using sql Syntax Highlighting
SELECT sum((sub*tir)) AS total FROM compras WHERE EXTRACT(YEAR FROM fecha_sale) = 2013 AND EXTRACT(MONTH FROM fecha_sale) = 1;
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Otra opción, usando periodos:
Using sql Syntax Highlighting
SELECT sum((sub*tir)) AS total FROM compras WHERE fecha_sale BETWEEN '2013-01-01' AND '2013-02-01';
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4