¿Existe alguna forma de excluir el análisis de tiempo para esas raras ocasiones en las que la precisión es importante?
Estoy usando timestamptz en una clave única compuesta (user_id, created_at)
para almacenar valores de series de tiempo. Sin embargo, no puedo paginar porque javascript trunca el campo created_at
a milisegundos, por lo que cuando hay dos creados en el mismo milisegundo, obtengo duplicados.
-- record --
id: 'c2ed61d5-ffab-4b0e-a957-c184b3f33132',
created_at: '2016-02-02 15:46:17.681601-05'
precise ^
Con una consulta de knex:
knex("series").where("created_at", ">", last.created_at).toString()
select * from series
where created_at > '2016-02-02T15:46:17.681-05:00'
truncated ^
La exclusión voluntaria del análisis de la marca de tiempo es una función que nos gustaría tener. Una función 'parseTime' personalizable o similar tal vez.
Sin embargo, no estoy seguro de su caso específico. Existe un límite para la granularidad del reloj de la computadora, por lo que requerir valores únicos created_at
no se escalará.
@ aj0strow ¿Quiere decir que le gustaría evitar que knex
convierta timestamp
al objeto Fecha de Javascript cuando se leen filas desde la base de datos?
Si es así, ese análisis se realiza al menos para PostgreSQL mediante el controlador pg
. Puede configurar el controlador para analizar los tipos de manera diferente con un código como este:
var pgTypes = require('pg').types;
// Don't parse dates to js Date() objects
pgTypes.setTypeParser(1082, 'text');
// Don't parse timestamps to js Date() objects
pgTypes.setTypeParser(1184, 'text');
También puede darle al controlador su propia función de analizador en lugar del parámetro text
.
@ rhys-vdw es único en el tiempo del usuario, así que estará bien.
@elhigu gracias!
Eso es exactamente lo que estaba buscando. También es posible convertir a ::text
en la consulta, pero es propenso a errores para mí, así que es mejor desactivar el análisis y analizar new Date
cuando sea necesario. Gracias de nuevo.
Comentario más útil
@ aj0strow ¿Quiere decir que le gustaría evitar que
knex
conviertatimestamp
al objeto Fecha de Javascript cuando se leen filas desde la base de datos?Si es así, ese análisis se realiza al menos para PostgreSQL mediante el controlador
pg
. Puede configurar el controlador para analizar los tipos de manera diferente con un código como este:También puede darle al controlador su propia función de analizador en lugar del parámetro
text
.