У меня есть поле Date
на доменном объекте:
class Observation {
Date observationTime
}
Значения заполняются и сохраняются в коде:
observation.observationTime = new Date()
observation.save()
У меня есть запрос, находитразличные значения этого поля:
distinctVals = Observation.executeQuery("select distinct o.observationTime from Observation o ..."
И еще один запрос для домена с использованием этих результатов:
Observation.createCriteria().list () {
or {
distinctVals.each { val ->
eq("observationTime", val)
}
}
Это было написано и работает в grails 2.3.4 с использованием MySql, где тип данных дляНаблюдение: время - это отметка времени.
Я перехожу на Grails 3.3.8 и Microsoft SQL Server 2016, где типом данных является дата-время, а второй запрос не возвращает результаты.
Отладчик показывает различные значения, содержащиеОбъект метки времени, и если я logSql и вставляю значение в SQL Ops Studio, он возвращает соответствующие результаты:
select *
from observation this_
where this_.observation_time='2018-09-30 16:32:35.773'
TLDR : я запрашиваю столбец datetime, который возвращает метку времени, затемвставьте эти временные метки обратно в запрос равенства в той же таблице и не получите результатов.
Так что я думаю, что это проблема сопоставления или преобразования типов при использовании SQL Server, но я не уверенправильное решение.Любые предложения приветствуются.Спасибо!