Когда вы передаете строку даты и времени, она должна быть проанализирована клиентским API и преобразована в целевой тип данных smalldatetime
, который не имеет понятия о часовом поясе. .NET распознает строку даты и времени ISO 8601 с буквой «Z», обозначающей UTC, и по умолчанию преобразует ее в местное время. Для остроумия:
DateTime.Parse("2019-03-26T00:00:00Z") //converted to your local time
DateTime.Parse("2019-03-26T00:00:00") //no conversion
Один из способов - использовать метод ToUniversalTime()
, чтобы избежать преобразования в местный часовой пояс:
DateTime.Parse("2019-03-26T00:00:00Z").ToUniversalTime()
Как правило, рекомендуется использовать DataTable
с собственными типами данных, содержащими желаемое значение, чтобы иметь полный контроль над фактическим значением, вставленным в базу данных.