2012-06-18 33 views
10

que tiene la siguiente consulta en una base de datos PostgreSQLprimer día del año en curso

SELECT * 
FROM accounts 
where insertdate BETWEEN '2012-01-01' AND CURRENT_TIMESTAMP 

Entonces, ¿cómo puedo reemplazar el '2012-01-01' pidiendo el primer día del año en curso

Hay una cuestión más. Cuando estoy teniendo un nuevo registro en la tabla de la cuenta el mismo momento en que se está ejecutando lo anterior selecciono para que no me traiga el registro que acabo de hacer. ¿Es razonable? ¿Cuál es la mejor manera de adelantarlo?

+1

'YYYY-01-01' es siempre el primer día del año ... –

Respuesta

23

Usted está buscando date_trunc(), que puede truncar una fecha para una precisión especificada (por ejemplo year, month, day):

SELECT date_trunc('year', now()); 

En su consulta:

SELECT * FROM accounts where insertdate BETWEEN 
date_trunc('year', now()) AND CURRENT_TIMESTAMP 
+0

Fue perfecto pero tengo un problema más. Cuando estoy teniendo un nuevo registro en la tabla de la cuenta el mismo momento en que se está ejecutando lo anterior selecciono para que no me traiga el registro que acabo de hacer ... ¿Cuál es la mejor manera de adelantarlo? – user1392203

+0

Si las operaciones se producen en transacciones separadas, la consulta debe encontrar el nuevo registro tan pronto como se haya confirmado la transacción de inserción. Si están en la misma transacción, solo debe ejecutar las consultas en el orden correcto. – beerbajay

+0

¿hay alguna forma de agregar el "día actual 23:59:59"? algo así como '2012-6-19 23:59:59' – user1392203

1

Usted puede tratar y utilice este CURRENT_TIMESTAMP.YEAR-01-01

Cuestiones relacionadas