2012-03-01 2 views
1

Следующий код не отображается для запуска, при выполнении кода:Datetime проблема с хранимой процедурой в SQL Server

Хранимая процедура сниппет:

Click to view full SP

AND (@month_ref = 81201 
     AND tsks.grouping_ref = @grouping_ref 
     AND ts.start_dtm BETWEEN convert(datetime, '2011-11-28') 
          AND convert(datetime,'2012-01-01') 
    ) 
    OR (@month_ref = 81202 
     AND tsks.grouping_ref = @grouping_ref 
     AND ts.start_dtm BETWEEN convert(datetime,'2012-01-02') 
          AND convert(datetime,'2012-01-29') 
    )... 

Установка сервера:

SQL Server настроен как:

  • Язык: Английский (США)

и Windows Server область и язык устанавливается:

  • Английский (США)

Наш тестовый сервер настроен для британцев Английский и хранимая процедура работают очень хорошо. У меня такое чувство, что настройка клиента не нравится.

дизайн DB/данные

ts.start_dtm выглядит в базе данных:

  • тип данных - даты и времени

    2011-04-01 00:00:00.000 
    

Таким образом, ее установки, как - YEAR | MONTH | DATE

Моя хранимая процедура является жесткой кодировкой start_dtm как '2012-01-02' которая также в том же формате.

Вы можете мне помочь?

Проблема заключается в сбое веб-сайта, когда он пытается запустить хранимую процедуру. Проблема заключалась в преобразовании данных. Мне пришлось назначить формат преобразования даты.

+0

Что произойдет, если вы просто пропустите конвертировать материал? –

+0

Моя проблема все равно останется ... :( –

+0

Вы действительно не сказали, какую ошибку/проблему вы получаете - не могли бы вы обновить вопрос, чтобы добавить это? –

ответ

1

Вам не нужно явно преобразовывать даты. Это ISO8601 формат, поэтому база данных должна понять это сразу:

ts.start_dtm Between '2011-11-28' AND '2012-01-01' 

Если вам нужно преобразовать их, указать, какой формат используется для строк:

ts.start_dtm Between convert(datetime,'2011-11-28', 120) AND convert(datetime,'2012-01-01', 120) 
+0

Что означает 120? –

+1

120 объясняется в таблице этой статьи http: // msdn.microsoft.com/en-us/library/ms187928.aspx –

+0

Это устранило проблему. Я все еще хотел бы знать, почему мне потребовалось 120, когда формат был уже стандартом ISO? Я вижу, что 120 относится к «ODBC canonical - yyyy-mm-dd hh: mi: ss (24h)» –

Смежные вопросы