Necesito un valor asociado a un mes y un usuario en una tabla. Y quiero realizar consultas al respecto. No sé si hay un tipo de datos de columna para este tipo de necesidad. Si no, debería:
El objetivo es ejecutar consultas como (pseudo-SQL):
SELECT val FROM t WHERE year_month = THIS_YEAR_MONTH and user_id='adc1-23...';Sugeriría no pensar demasiado en el problema y simplemente usar la primera fecha/hora del mes. Postgres tiene muchas funciones específicas de fecha, desde date_trunc() a age() a + interval , para admitir fechas.
Puede convertirlos fácilmente al formato que desee, obtener la diferencia entre dos valores, etc.
Si expresa su consulta como:
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...' Entonces puede aprovechar fácilmente un índice en (user_id, year_month) o (year_month, user_id) .
Si está interesado en mostrar valores en formato AAAA-MM, puede usar to_char(your_datatime_colum,'YYYY-MM')
ejemplo:
SELECT to_char(now(),'YYYY-MM') as year_month