Я пробовал две разные версии этого же запроса, и в SQL Server что-то вроде того, что у вас есть where year(somecolumn)
, было значительно медленнее (почти на порядок), чем запрос в скобках.
Вы должнысоздайте две даты, одну в начале диапазона и одну в конце.Скажем, что у вас есть строка:
val data = "2011-03-05"
Где-то создайте удобную константу для анализа значения:
val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM")
А затем:
val yearMonthString = data.substring(0, 7)
val fromValue = dateFormat.parse(yearMonthString)
val c: Calendar = Calendar.getInstance(iPutATimeZoneHere)
c.setTime(fromValue)
c.add(Calendar.MONTH, 1)
val toValue = c.getTime
В вашем запросе, у вас будет where somecolumn >= :fromValue and somecolumn < :toValue
.
Этот код написан на Scala, но использует стандартные библиотеки Java.