формат даты и региональные настройки - PullRequest
4 голосов
/ 01 марта 2010

Я использую MS SQL 2000, VS2008, MVC и C #.

Я пытаюсь вставить и обновить некоторые данные, используя хранимые процедуры. Некоторые столбцы имеют тип datetime. Региональные настройки на сервере и клиенте установлены на голландском (Бельгия) Это означает, что формат даты по умолчанию - дд / мм / гггг.

Когда я пытаюсь вставить или обновить дату, например. 28/03/2009, я получаю следующие ошибки:

Вставка: Ошибка преобразования типа данных nvarchar в datetime

Обновление: Преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона

Когда я пытаюсь указать дату, например 01/03/2009, я не получаю ошибок, но дата сохраняется как 01.01.2009, формат даты в США Это типичное поведение для проблем с региональными настройками. Но оба настроены на голландский (Бельгия).

Почему сохраняются даты в формате США?
Что мне здесь не хватает?

Спасибо!
Стейн

Ответы [ 4 ]

3 голосов
/ 01 марта 2010

Вы должны вставлять данные в базу данных, используя объект DateTime, а не строку. Ваш код на стороне клиента должен преобразовать запись даты клиента в объект DateTime с использованием региональных настроек клиента, затем к параметру, который в конечном итоге отправляется в базу данных, должна быть добавлена ​​структура DateTime.

1 голос
/ 01 марта 2010

Все приведенные выше предложения верны, но я считаю, что если вы добавляете datetime в виде строки / varchar, самый безопасный способ - в формате 'YYYY-MM-DD'

Так, например.

  Update MyTable
  Set MyDate = '2010-03-01'
1 голос
/ 01 марта 2010

У меня тоже была эта проблема, это как-то связано с форматом даты для вашего SQL-сервера,

Я решил это, отформатировав строку даты, которая будет вставлена ​​так:

DateTime.Now.ToString("MM/dd/yyyy HH:mm")

надеюсь, что помогает

1 голос
/ 01 марта 2010

Экземпляр SQL имеет собственную настройку локали, по умолчанию "us_english"

Теперь это обычно происходит, если вы используете varchar, а не собственный datetime для хранения значений данных. Если в вашем коде / таблицах используются столбцы даты и времени, а вы определяете параметры как дату и время, ошибок не будет.

...