Строка Grails (дата) в виде переменной в устаревшей БД и запрос с использованием функции Between

#sql #date #grails #grails-orm #varchar

#sql #Дата #grails #grails-orm #varchar

Вопрос:

Новое приложение Grails должно использовать старую БД, которая использовалась многими другими приложениями. В старой БД все поля даты оформлены как VARCHAR(10). В приложении grails будет выполняться операция поиска на основе даты, т.Е. Поиск записей между двумя датами. Но это немного сложно при создании критериев для данной ситуации.

 def fromDate = '12/06/2013' 
def toDate =  '02/15/2014'
HistroyRecords.createCriteria().list{
     between('dateCreated', fromDate, toDate) 
}
 

Это не работает для частей года. т. Е., Это работает как сравнение строк. Пожалуйста, помогите мне применить функцию сравнения дат к столбцу varchar БД.

Примечание: Этот критерий поиска основан на нескольких полях даты, а не только на одном.

Комментарии:

1. IMO, вы не можете достичь этого, используя стандартные функции GORM, такие как запросы критериев и динамические средства поиска. Возможно, вы могли бы сделать это с помощью какого-нибудь запроса SQL или HQL, который включает в себя анализ строки даты и сравнение дней, месяцев и лет по отдельности. Какую устаревшую базу данных вы используете?

2. Спасибо за ваш ответ, да, я устал от этого, но поскольку поля поиска содержат больше полей диапазона дат (5), а также другие поля поиска. Затем запрос стал очень длинным. Так что пытаюсь найти какие-то другие решения. Общая таблица базы данных SQL Server, к которой обращаются многие приложения, данные вставляются различными приложениями и функцией поиска, предоставляемой новым приложением grails.