我正在爲我的頁面創建搜索功能。數據將來自數據庫。grails標準:如何選擇mysql中的所有列,並同時格式化日期然後像
在HTML中,日期以這種格式顯示dd/mm/yyyy。我想要做的是在選擇查詢中,我想選擇所有列,並且應該使用該格式顯示日期,並且我有一些類似的條件將用於檢查是否匹配。
如何將選擇所有列,格式日期和所有同時檢查匹配使用一個單獨的語句中的標準?
這是我迄今爲止所做的,但這是錯誤的。
searchString = searchString.toLowerCase()
def employeeSearchCri = Employee.createCriteria();
def searchedEmployeeList = employeeSearchCri.list(){
or {
ilike("employeeNo", "%" + searchString + "%")
ilike("firstName", "%" + searchString + "%")
ilike("lastName", "%" + searchString + "%")
ilike("middleName", "%" + searchString + "%")
ilike("jobPosition", "%" + searchString + "%")
ilike("date_format(hireDate, '%d/%m/%Y')", "%" + searchString + "%")
ilike("status", "%" + searchString + "%")
}
and{
eq("companyId",companyId)
}
}
return searchedEmployeeList;
首先感謝你的所有提示,這真的很有幫助。我有一個問題,假設我有這個** searchString「/ 2015」**在你的例子中,這將不匹配hireDate列的權利?請問在Grails中是否有可能這樣做?我試着用這個sqlRestriction(「cast(date_format(hire_date,'%d /%m /%Y')AS CHAR)」),我也有一個類似的聲明在底部,但我得到這個「java.lang .String不能轉換爲java.util.Date「。謝謝:) – user3714598
正確。沒有辦法將'/ 2015'變成日期。但是,如果您想出一個用於指定日期部分的搜索語法,例如'year:2015',則可以在條件中使用它。例如:一年(「hireDate」,searchYear)。所以基本上你需要一些邏輯來確定你的搜索類型(例如純文本,僱用日期,僱傭月份,僱傭日,僱傭年)並從那裏繼續。您可以在條件中使用函數year(),month()和day()。請參閱https://grails.github.io/grails-doc/latest/guide/GORM.html#detachedCriteria –