Groovy SQL e SimpleDateFormat ajudam
-
20-09-2019 - |
Pergunta
No meu banco de dados, eu tenho um tipo de coluna: DateTime.
Dados da coluna Exemplo: 2009-02-03 19: 04: 23.0
Estou a usar : SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Para definir meu formato de data.
Estou usando o GroovySQL para ler tabelas e para cada linhas, estou adicionando um novo objeto Samplej (mapeado para uma nova tabela - Samplej).
Aqui meu fechamento:
def sampleQuery(int dataset) {
sqlModule.eachRow("""
select b.*
from dataset a, array_data b
where dataset_id = "${dataset}"
and a.array_data_id = b.array_data_id ;""")
{
def addSample= new SampleJ(it.toRowResult())
addSample.id = "${it.array_data_id}" as int
addSample.dateCreated = dateFormat.parse("${it.date_created}")
//addSample...(more columns)
addSample.save()
}
}
Quando eu verifico, minha tabela temporária "Samplej", toda a minha data não corresponde com "$ {it.date_created}".
Todas as datas estão definidas como "new Date ()" (para fechar o tempo de execução).
Via depurador:
"$ {it.date_created}" é definido como "Ter 03 de fevereiro 19:04:23 CST 2009", correspondente a (2009-02-03 19: 04: 23.0). Eu deveria ter essa data!
Como posso corrigir esse problema? Não tenho erro, apenas datas erradas.
Existe uma maneira fácil de definir minhas datas no Samplej?
Uma alternativa a addSample.datecRed = dateFormat.parse ("$ {it.date_created}")?
Solução
Grails estará definindo Date_created para a hora atual por convenção, você precisa adicionar
static mapping = {
autoTimestamp false
}
para samplej.
Como alternativa, renomeie a DATEcreated para outra coisa.