Я разрабатываю приложение ASP.NET, написанное на C #, которое использует NHibernate и SQL Server 2005/2008.
В настоящее время у меня есть некоторые даты, отображаемые из базы данных в формате, который соответствует текущему пользователю CultureInfo / DateTimeFormatInfo.Теперь мне нужно поддерживать быстрый поиск, который будет сопоставлять строки базы данных на основе поискового запроса, который частично соответствует отображаемому.
Так что, если я отображаю «01/02/2009 03:00:00» и они набирают «01/02», мне нужно сопоставить эту строку (среди любых других, которые соответствуют частичному шаблону).То же самое относится и к «02/20», «02/2009» и т. Д. По сути, это просто частичное совпадение строк в том, что я отображаю в пользовательском интерфейсе, но фильтрация должна происходить на уровне базы данных, когда яизвлечение строк.
Мой текущий план - создать запрос (через ICriteria), который выполняет WHERE для столбца DateTime после преобразования его в nvarchar, а затем выполняет LIKE для этого преобразования.Так что-то вроде "ГДЕ КОНВЕРТ (nvarchar (19), КОЛОННА, 120) КАК '%?%'".Возможно, вы уже можете увидеть проблему, так как CONVERT использует «120» в качестве формата даты вместо чего-то вроде «MM / DD / YYYY» (что я мог бы получить из текущего DateTimeFormatInfo).К сожалению, результат CONVERT должен соответствовать тому, что отображается в моем пользовательском интерфейсе для этого подхода.
Я могу получить шаблон в виде строки из DateTimeFormatInfo, но SQL Server, похоже, не поддерживает стандартные шаблоны строковых дат при преобразовании.Есть ли какой-нибудь способ заставить DateTimeFormatInfo в C # хорошо работать с CONVERT в SQL Server?Может быть, есть какой-то инструмент NHibernate для такого рода вещей (что было бы неплохо, поскольку он не привязывал бы меня к SQL Server, как это делает прямой запрос)?Или, может быть, какой-то другой вариант, по которому мой сгоревший мозг отсутствует?
Спасибо за ваше время и помощь!