Existe uma maneira de desativar a análise de tempo para aquelas raras ocasiões em que a precisão é importante?
Estou usando timestamptz em uma chave única composta (user_id, created_at)
para armazenar valores de série temporal. No entanto, não posso paginar porque o javascript trunca o campo created_at
em milissegundos, então, quando há dois criados no mesmo milissegundo, obtenho duplicatas.
-- record --
id: 'c2ed61d5-ffab-4b0e-a957-c184b3f33132',
created_at: '2016-02-02 15:46:17.681601-05'
precise ^
Com uma consulta 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 ^
A desativação da análise de carimbo de data / hora é um recurso que gostaríamos de ter. Uma função 'parseTime' personalizável ou semelhante, talvez.
No entanto, não tenho certeza sobre o seu caso específico. Há um limite para a granularidade do relógio do computador, portanto, exigir valores created_at
exclusivos não vai escalar.
@ aj0strow Você quer dizer que gostaria de evitar que knex
converta timestamp
em um objeto Data Javascript quando as linhas forem lidas do banco de dados?
Nesse caso, essa análise é feita pelo menos para PostgreSQL pelo driver pg
. Você pode configurar o driver para analisar os tipos de maneira diferente com um código parecido com 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');
Você também pode fornecer ao driver sua própria função de analisador em vez do parâmetro text
.
@ rhys-vdw é único na hora do usuário +, então vai ficar bem.
@elhigu obrigado!
Isso é exatamente o que eu estava procurando. Também é possível converter para ::text
na consulta, mas é propenso a erros para mim, então é melhor desligar a análise e analisar new Date
quando necessário. Obrigado novamente.
Comentários muito úteis
@ aj0strow Você quer dizer que gostaria de evitar que
knex
convertatimestamp
em um objeto Data Javascript quando as linhas forem lidas do banco de dados?Nesse caso, essa análise é feita pelo menos para PostgreSQL pelo driver
pg
. Você pode configurar o driver para analisar os tipos de maneira diferente com um código parecido com este:Você também pode fornecer ao driver sua própria função de analisador em vez do parâmetro
text
.