Какой язык Вы используете? Стандартный способ сделать это было бы чем-то как / ([И следующие] [Oo] {2} |BAR) / с чувствительностью к регистру на, но в Java, например, существует модификатор чувствительности к регистру (? i), который делает все символы направо от него нечувствительными к регистру и (?-i), который вызывает чувствительность. Пример того Java regex модификатор может быть найден здесь .
Если вы используете SQL Server 2008, то «правильным» решением будет использование типа данных SQL datetimeoffset
вместо SQL datetime. datetimeoffset
- это новый для SQL 2008 тип даты / времени с учетом часового пояса, который будет преобразован в ADO.NET в тип CLR System.DateTimeOffset
, который всегда относится к UTC. Вот сообщение в блоге , в котором подробно рассказывается об этом. Первые несколько результатов поиска в MSDN для DateTimeOffset
предоставляют дополнительную справочную информацию.
Если вы не можете изменить схему SQL, в ADO.NET есть свойство, настроенное для этой ситуации: DataColumn.DateTimeMode
, которое определяет, добавляется ли местный часовой пояс при сериализации набора данных ( DateTimeMode = DataSetDateTime.UnspecifiedLocal
, значение по умолчанию) или сведения о том, не добавляется ли информация о часовом поясе при сериализации ( DateTimeMode = DataSetDateTime.Unspecified
). Вам нужно последнее.
Если я правильно прочитал документы MSDN, вы сможете установить DateTimeMode = DataSetDateTime.Unspecified
для DataColumn
, о котором идет речь, после того, как DataSet будет заполнен. Это должно сериализовать столбец без часового пояса.
Если вы хотите быть действительно правильным (или в случае, если описанный выше подход не работает), вы можете заранее создать DataTable
и установить для этого столбца DateTimeMode = DataSetDateTime.Utc
перед Заполните
строками. Тогда вы уверены, что отправите дату в формате UTC.