Преобразование типа данных varchar в тип данных smalldatetime привело к значению вне диапазона - PullRequest
0 голосов
/ 14 июня 2011

Я использую SQL Server 2008, NHIbernate и запускаю этот фрагмент кода

выберите время 0 _. [Дата] в качестве Date2_8_, time0_.Hours как Hours8_, time0_.AuthorizedDate как Authoriz7_8_, time0_.AuthorizedByкак Authoriz9_8_ из [Time] time0_, где (UserID = '4') AND (Date = '5/26/2011 12:00:00 AM') выдает мне сообщение об ошибке:

{"Преобразованиес типом данных varchar на тип данных smalldatetime привел к значению вне допустимого диапазона. "}

NHibernate для Date и AuthorizedDate:

<property name="Date" type="DateTime">
        <column name="`Date`" length="4" sql-type="smalldatetime" not-null="true"/>
    </property>
<property name="authorizedDate" type="DateTime" access="field">
        <column name="AuthorizedDate" length="4" sql-type="smalldatetime" not-null="false"/>
    </property>

Но если я возьмукусок sql и запустите его из sql management studio, он запустится без проблем.

Формат DateTime для сервера sql - английский (США), а формат datetime для моей машины - английский (США)..

Я пытался Ошибка: преобразование типа данных nvarchar в тип данных smalldatetime привело к выходу за пределы диапазона значений и преобразования типа данных varchar втип данных datetime привел к превышению диапазона vALUE .Но не смог решить мою проблему.

Есть идеи, что может быть причиной этой проблемы?

1 Ответ

0 голосов
/ 14 июня 2011

Почему вы нанесли это на карту таким образом?

Вы можете попробовать отобразить это просто:

<property name="Date" not-null="true" />

попробуйте также удалить length="4"

обновление

Вот некоторые документы: Поддержка даты / времени в NHibernate

DbType.DateTime отображает дату и время (или smalldatetime) тип SQL

Так что я думаю, что не нужно указывать это в файле отображения.

Однако я думаю, что основной проблемой здесь является формат даты. Если я пытаюсь локально в SSMS с «26.05.2011 12:00:00 AM», мой запрос возвращается правильно, но если я пытаюсь «26/05/2011 12:00:00 AM», я получаю ошибку:

Преобразование типа данных varchar к типу данных datetime привел к значение вне диапазона.

Вы пытались настроить локализацию в своем приложении?

...